home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / nasm095s.zip / INSNSA.C < prev    next >
C/C++ Source or Header  |  1997-07-27  |  94KB  |  2,559 lines

  1. /* This file auto-generated from insns.dat by insns.pl - don't edit it */
  2.  
  3. #include <stdio.h>
  4. #include "nasm.h"
  5. #include "insns.h"
  6.  
  7. static struct itemplate instrux_AAA[] = {
  8.     {I_AAA, 0, {0,0,0}, "\1\x37", IF_8086},
  9.     {-1}
  10. };
  11.  
  12. static struct itemplate instrux_AAD[] = {
  13.     {I_AAD, 0, {0,0,0}, "\2\xD5\x0A", IF_8086},
  14.     {I_AAD, 1, {IMMEDIATE,0,0}, "\1\xD5\24", IF_8086|IF_UNDOC},
  15.     {-1}
  16. };
  17.  
  18. static struct itemplate instrux_AAM[] = {
  19.     {I_AAM, 0, {0,0,0}, "\2\xD4\x0A", IF_8086},
  20.     {I_AAM, 1, {IMMEDIATE,0,0}, "\1\xD4\24", IF_8086|IF_UNDOC},
  21.     {-1}
  22. };
  23.  
  24. static struct itemplate instrux_AAS[] = {
  25.     {I_AAS, 0, {0,0,0}, "\1\x3F", IF_8086},
  26.     {-1}
  27. };
  28.  
  29. static struct itemplate instrux_ADC[] = {
  30.     {I_ADC, 2, {MEMORY,REG8,0}, "\300\1\x10\101", IF_8086|IF_SM},
  31.     {I_ADC, 2, {REG8,REG8,0}, "\300\1\x10\101", IF_8086},
  32.     {I_ADC, 2, {MEMORY,REG16,0}, "\320\300\1\x11\101", IF_8086|IF_SM},
  33.     {I_ADC, 2, {REG16,REG16,0}, "\320\300\1\x11\101", IF_8086},
  34.     {I_ADC, 2, {MEMORY,REG32,0}, "\321\300\1\x11\101", IF_386|IF_SM},
  35.     {I_ADC, 2, {REG32,REG32,0}, "\321\300\1\x11\101", IF_386},
  36.     {I_ADC, 2, {REG8,MEMORY,0}, "\301\1\x12\110", IF_8086|IF_SM},
  37.     {I_ADC, 2, {REG8,REG8,0}, "\301\1\x12\110", IF_8086},
  38.     {I_ADC, 2, {REG16,MEMORY,0}, "\320\301\1\x13\110", IF_8086|IF_SM},
  39.     {I_ADC, 2, {REG16,REG16,0}, "\320\301\1\x13\110", IF_8086},
  40.     {I_ADC, 2, {REG32,MEMORY,0}, "\321\301\1\x13\110", IF_386|IF_SM},
  41.     {I_ADC, 2, {REG32,REG32,0}, "\321\301\1\x13\110", IF_386},
  42.     {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\202\15", IF_8086},
  43.     {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\202\15", IF_386},
  44.     {I_ADC, 2, {REG_AL,IMMEDIATE,0}, "\1\x14\21", IF_8086|IF_SM},
  45.     {I_ADC, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x15\31", IF_8086|IF_SM},
  46.     {I_ADC, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x15\41", IF_386|IF_SM},
  47.     {I_ADC, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\202\21", IF_8086|IF_SM},
  48.     {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\202\31", IF_8086|IF_SM},
  49.     {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\202\41", IF_386|IF_SM},
  50.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\202\21", IF_8086|IF_SM},
  51.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\202\31", IF_8086|IF_SM},
  52.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\202\41", IF_386|IF_SM},
  53.     {-1}
  54. };
  55.  
  56. static struct itemplate instrux_ADD[] = {
  57.     {I_ADD, 2, {MEMORY,REG8,0}, "\300\17\101", IF_8086|IF_SM},
  58.     {I_ADD, 2, {REG8,REG8,0}, "\300\17\101", IF_8086},
  59.     {I_ADD, 2, {MEMORY,REG16,0}, "\320\300\1\x01\101", IF_8086|IF_SM},
  60.     {I_ADD, 2, {REG16,REG16,0}, "\320\300\1\x01\101", IF_8086},
  61.     {I_ADD, 2, {MEMORY,REG32,0}, "\321\300\1\x01\101", IF_386|IF_SM},
  62.     {I_ADD, 2, {REG32,REG32,0}, "\321\300\1\x01\101", IF_386},
  63.     {I_ADD, 2, {REG8,MEMORY,0}, "\301\1\x02\110", IF_8086|IF_SM},
  64.     {I_ADD, 2, {REG8,REG8,0}, "\301\1\x02\110", IF_8086},
  65.     {I_ADD, 2, {REG16,MEMORY,0}, "\320\301\1\x03\110", IF_8086|IF_SM},
  66.     {I_ADD, 2, {REG16,REG16,0}, "\320\301\1\x03\110", IF_8086},
  67.     {I_ADD, 2, {REG32,MEMORY,0}, "\321\301\1\x03\110", IF_386|IF_SM},
  68.     {I_ADD, 2, {REG32,REG32,0}, "\321\301\1\x03\110", IF_386},
  69.     {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\200\15", IF_8086},
  70.     {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\200\15", IF_386},
  71.     {I_ADD, 2, {REG_AL,IMMEDIATE,0}, "\1\x04\21", IF_8086|IF_SM},
  72.     {I_ADD, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x05\31", IF_8086|IF_SM},
  73.     {I_ADD, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x05\41", IF_386|IF_SM},
  74.     {I_ADD, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\200\21", IF_8086|IF_SM},
  75.     {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\200\31", IF_8086|IF_SM},
  76.     {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\200\41", IF_386|IF_SM},
  77.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\200\21", IF_8086|IF_SM},
  78.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\200\31", IF_8086|IF_SM},
  79.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\200\41", IF_386|IF_SM},
  80.     {-1}
  81. };
  82.  
  83. static struct itemplate instrux_AND[] = {
  84.     {I_AND, 2, {MEMORY,REG8,0}, "\300\1\x20\101", IF_8086|IF_SM},
  85.     {I_AND, 2, {REG8,REG8,0}, "\300\1\x20\101", IF_8086},
  86.     {I_AND, 2, {MEMORY,REG16,0}, "\320\300\1\x21\101", IF_8086|IF_SM},
  87.     {I_AND, 2, {REG16,REG16,0}, "\320\300\1\x21\101", IF_8086},
  88.     {I_AND, 2, {MEMORY,REG32,0}, "\321\300\1\x21\101", IF_386|IF_SM},
  89.     {I_AND, 2, {REG32,REG32,0}, "\321\300\1\x21\101", IF_386},
  90.     {I_AND, 2, {REG8,MEMORY,0}, "\301\1\x22\110", IF_8086|IF_SM},
  91.     {I_AND, 2, {REG8,REG8,0}, "\301\1\x22\110", IF_8086},
  92.     {I_AND, 2, {REG16,MEMORY,0}, "\320\301\1\x23\110", IF_8086|IF_SM},
  93.     {I_AND, 2, {REG16,REG16,0}, "\320\301\1\x23\110", IF_8086},
  94.     {I_AND, 2, {REG32,MEMORY,0}, "\321\301\1\x23\110", IF_386|IF_SM},
  95.     {I_AND, 2, {REG32,REG32,0}, "\321\301\1\x23\110", IF_386},
  96.     {I_AND, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\204\15", IF_8086},
  97.     {I_AND, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\204\15", IF_386},
  98.     {I_AND, 2, {REG_AL,IMMEDIATE,0}, "\1\x24\21", IF_8086|IF_SM},
  99.     {I_AND, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x25\31", IF_8086|IF_SM},
  100.     {I_AND, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x25\41", IF_386|IF_SM},
  101.     {I_AND, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\204\21", IF_8086|IF_SM},
  102.     {I_AND, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\204\31", IF_8086|IF_SM},
  103.     {I_AND, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\204\41", IF_386|IF_SM},
  104.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\204\21", IF_8086|IF_SM},
  105.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\204\31", IF_8086|IF_SM},
  106.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\204\41", IF_386|IF_SM},
  107.     {-1}
  108. };
  109.  
  110. static struct itemplate instrux_ARPL[] = {
  111.     {I_ARPL, 2, {MEMORY,REG16,0}, "\300\1\x63\101", IF_286|IF_PRIV|IF_SM},
  112.     {I_ARPL, 2, {REG16,REG16,0}, "\300\1\x63\101", IF_286|IF_PRIV},
  113.     {-1}
  114. };
  115.  
  116. static struct itemplate instrux_BOUND[] = {
  117.     {I_BOUND, 2, {REG16,MEMORY,0}, "\320\301\1\x62\110", IF_186},
  118.     {I_BOUND, 2, {REG32,MEMORY,0}, "\321\301\1\x62\110", IF_386},
  119.     {-1}
  120. };
  121.  
  122. static struct itemplate instrux_BSF[] = {
  123.     {I_BSF, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBC\110", IF_386|IF_SM},
  124.     {I_BSF, 2, {REG16,REG16,0}, "\320\301\2\x0F\xBC\110", IF_386},
  125.     {I_BSF, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xBC\110", IF_386|IF_SM},
  126.     {I_BSF, 2, {REG32,REG32,0}, "\321\301\2\x0F\xBC\110", IF_386},
  127.     {-1}
  128. };
  129.  
  130. static struct itemplate instrux_BSR[] = {
  131.     {I_BSR, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBD\110", IF_386|IF_SM},
  132.     {I_BSR, 2, {REG16,REG16,0}, "\320\301\2\x0F\xBD\110", IF_386},
  133.     {I_BSR, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xBD\110", IF_386|IF_SM},
  134.     {I_BSR, 2, {REG32,REG32,0}, "\321\301\2\x0F\xBD\110", IF_386},
  135.     {-1}
  136. };
  137.  
  138. static struct itemplate instrux_BSWAP[] = {
  139.     {I_BSWAP, 1, {REG32,0,0}, "\321\1\x0F\10\xC8", IF_486},
  140.     {-1}
  141. };
  142.  
  143. static struct itemplate instrux_BT[] = {
  144.     {I_BT, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA3\101", IF_386|IF_SM},
  145.     {I_BT, 2, {REG16,REG16,0}, "\320\300\2\x0F\xA3\101", IF_386},
  146.     {I_BT, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA3\101", IF_386|IF_SM},
  147.     {I_BT, 2, {REG32,REG32,0}, "\321\300\2\x0F\xA3\101", IF_386},
  148.     {I_BT, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\204\25", IF_386},
  149.     {I_BT, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\204\25", IF_386},
  150.     {-1}
  151. };
  152.  
  153. static struct itemplate instrux_BTC[] = {
  154.     {I_BTC, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xBB\101", IF_386|IF_SM},
  155.     {I_BTC, 2, {REG16,REG16,0}, "\320\300\2\x0F\xBB\101", IF_386},
  156.     {I_BTC, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xBB\101", IF_386|IF_SM},
  157.     {I_BTC, 2, {REG32,REG32,0}, "\321\300\2\x0F\xBB\101", IF_386},
  158.     {I_BTC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\207\25", IF_386},
  159.     {I_BTC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\207\25", IF_386},
  160.     {-1}
  161. };
  162.  
  163. static struct itemplate instrux_BTR[] = {
  164.     {I_BTR, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xB3\101", IF_386|IF_SM},
  165.     {I_BTR, 2, {REG16,REG16,0}, "\320\300\2\x0F\xB3\101", IF_386},
  166.     {I_BTR, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xB3\101", IF_386|IF_SM},
  167.     {I_BTR, 2, {REG32,REG32,0}, "\321\300\2\x0F\xB3\101", IF_386},
  168.     {I_BTR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\206\25", IF_386},
  169.     {I_BTR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\206\25", IF_386},
  170.     {-1}
  171. };
  172.  
  173. static struct itemplate instrux_BTS[] = {
  174.     {I_BTS, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xAB\101", IF_386|IF_SM},
  175.     {I_BTS, 2, {REG16,REG16,0}, "\320\300\2\x0F\xAB\101", IF_386},
  176.     {I_BTS, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xAB\101", IF_386|IF_SM},
  177.     {I_BTS, 2, {REG32,REG32,0}, "\321\300\2\x0F\xAB\101", IF_386},
  178.     {I_BTS, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\205\25", IF_386},
  179.     {I_BTS, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\205\25", IF_386},
  180.     {-1}
  181. };
  182.  
  183. static struct itemplate instrux_CALL[] = {
  184.     {I_CALL, 1, {IMMEDIATE,0,0}, "\322\1\xE8\64", IF_8086},
  185.     {I_CALL, 1, {IMMEDIATE|FAR,0,0}, "\322\1\x9A\34\37", IF_8086},
  186.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\322\1\x9A\35\30", IF_8086},
  187.     {I_CALL, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "\320\1\x9A\31\30", IF_8086},
  188.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "\320\1\x9A\31\30", IF_8086},
  189.     {I_CALL, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "\321\1\x9A\41\30", IF_386},
  190.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "\321\1\x9A\41\30", IF_386},
  191.     {I_CALL, 1, {MEMORY|FAR,0,0}, "\322\300\1\xFF\203", IF_8086},
  192.     {I_CALL, 1, {MEMORY|BITS16|FAR,0,0}, "\320\300\1\xFF\203", IF_8086},
  193.     {I_CALL, 1, {MEMORY|BITS32|FAR,0,0}, "\321\300\1\xFF\203", IF_386},
  194.     {I_CALL, 1, {MEMORY|NEAR,0,0}, "\322\300\1\xFF\202", IF_8086},
  195.     {I_CALL, 1, {MEMORY|BITS16|NEAR,0,0}, "\320\300\1\xFF\202", IF_8086},
  196.     {I_CALL, 1, {MEMORY|BITS32|NEAR,0,0}, "\321\300\1\xFF\202", IF_386},
  197.     {I_CALL, 1, {REG16,0,0}, "\320\300\1\xFF\202", IF_8086},
  198.     {I_CALL, 1, {REG32,0,0}, "\321\300\1\xFF\202", IF_386},
  199.     {I_CALL, 1, {MEMORY,0,0}, "\322\300\1\xFF\202", IF_8086},
  200.     {I_CALL, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\202", IF_8086},
  201.     {I_CALL, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\202", IF_386},
  202.     {-1}
  203. };
  204.  
  205. static struct itemplate instrux_CBW[] = {
  206.     {I_CBW, 0, {0,0,0}, "\320\1\x98", IF_8086},
  207.     {-1}
  208. };
  209.  
  210. static struct itemplate instrux_CDQ[] = {
  211.     {I_CDQ, 0, {0,0,0}, "\321\1\x99", IF_386},
  212.     {-1}
  213. };
  214.  
  215. static struct itemplate instrux_CLC[] = {
  216.     {I_CLC, 0, {0,0,0}, "\1\xF8", IF_8086},
  217.     {-1}
  218. };
  219.  
  220. static struct itemplate instrux_CLD[] = {
  221.     {I_CLD, 0, {0,0,0}, "\1\xFC", IF_8086},
  222.     {-1}
  223. };
  224.  
  225. static struct itemplate instrux_CLI[] = {
  226.     {I_CLI, 0, {0,0,0}, "\1\xFA", IF_8086},
  227.     {-1}
  228. };
  229.  
  230. static struct itemplate instrux_CLTS[] = {
  231.     {I_CLTS, 0, {0,0,0}, "\2\x0F\x06", IF_286|IF_PRIV},
  232.     {-1}
  233. };
  234.  
  235. static struct itemplate instrux_CMC[] = {
  236.     {I_CMC, 0, {0,0,0}, "\1\xF5", IF_8086},
  237.     {-1}
  238. };
  239.  
  240. static struct itemplate instrux_CMP[] = {
  241.     {I_CMP, 2, {MEMORY,REG8,0}, "\300\1\x38\101", IF_8086|IF_SM},
  242.     {I_CMP, 2, {REG8,REG8,0}, "\300\1\x38\101", IF_8086},
  243.     {I_CMP, 2, {MEMORY,REG16,0}, "\320\300\1\x39\101", IF_8086|IF_SM},
  244.     {I_CMP, 2, {REG16,REG16,0}, "\320\300\1\x39\101", IF_8086},
  245.     {I_CMP, 2, {MEMORY,REG32,0}, "\321\300\1\x39\101", IF_386|IF_SM},
  246.     {I_CMP, 2, {REG32,REG32,0}, "\321\300\1\x39\101", IF_386},
  247.     {I_CMP, 2, {REG8,MEMORY,0}, "\301\1\x3A\110", IF_8086|IF_SM},
  248.     {I_CMP, 2, {REG8,REG8,0}, "\301\1\x3A\110", IF_8086},
  249.     {I_CMP, 2, {REG16,MEMORY,0}, "\320\301\1\x3B\110", IF_8086|IF_SM},
  250.     {I_CMP, 2, {REG16,REG16,0}, "\320\301\1\x3B\110", IF_8086},
  251.     {I_CMP, 2, {REG32,MEMORY,0}, "\321\301\1\x3B\110", IF_386|IF_SM},
  252.     {I_CMP, 2, {REG32,REG32,0}, "\321\301\1\x3B\110", IF_386},
  253.     {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\207\15", IF_8086},
  254.     {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\207\15", IF_386},
  255.     {I_CMP, 2, {REG_AL,IMMEDIATE,0}, "\1\x3C\21", IF_8086|IF_SM},
  256.     {I_CMP, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x3D\31", IF_8086|IF_SM},
  257.     {I_CMP, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x3D\41", IF_386|IF_SM},
  258.     {I_CMP, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\207\21", IF_8086|IF_SM},
  259.     {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\207\31", IF_8086|IF_SM},
  260.     {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\207\41", IF_386|IF_SM},
  261.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\207\21", IF_8086|IF_SM},
  262.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\207\31", IF_8086|IF_SM},
  263.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\207\41", IF_386|IF_SM},
  264.     {-1}
  265. };
  266.  
  267. static struct itemplate instrux_CMPSB[] = {
  268.     {I_CMPSB, 0, {0,0,0}, "\1\xA6", IF_8086},
  269.     {-1}
  270. };
  271.  
  272. static struct itemplate instrux_CMPSD[] = {
  273.     {I_CMPSD, 0, {0,0,0}, "\321\1\xA7", IF_386},
  274.     {-1}
  275. };
  276.  
  277. static struct itemplate instrux_CMPSW[] = {
  278.     {I_CMPSW, 0, {0,0,0}, "\320\1\xA7", IF_8086},
  279.     {-1}
  280. };
  281.  
  282. static struct itemplate instrux_CMPXCHG[] = {
  283.     {I_CMPXCHG, 2, {MEMORY,REG8,0}, "\300\2\x0F\xB0\101", IF_PENT|IF_SM},
  284.     {I_CMPXCHG, 2, {REG8,REG8,0}, "\300\2\x0F\xB0\101", IF_PENT},
  285.     {I_CMPXCHG, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xB1\101", IF_PENT|IF_SM},
  286.     {I_CMPXCHG, 2, {REG16,REG16,0}, "\320\300\2\x0F\xB1\101", IF_PENT},
  287.     {I_CMPXCHG, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xB1\101", IF_PENT|IF_SM},
  288.     {I_CMPXCHG, 2, {REG32,REG32,0}, "\321\300\2\x0F\xB1\101", IF_PENT},
  289.     {-1}
  290. };
  291.  
  292. static struct itemplate instrux_CMPXCHG486[] = {
  293.     {I_CMPXCHG486, 2, {MEMORY,REG8,0}, "\300\2\x0F\xA6\101", IF_486|IF_SM|IF_UNDOC},
  294.     {I_CMPXCHG486, 2, {REG8,REG8,0}, "\300\2\x0F\xA6\101", IF_486|IF_UNDOC},
  295.     {I_CMPXCHG486, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA7\101", IF_486|IF_SM|IF_UNDOC},
  296.     {I_CMPXCHG486, 2, {REG16,REG16,0}, "\320\300\2\x0F\xA7\101", IF_486|IF_UNDOC},
  297.     {I_CMPXCHG486, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA7\101", IF_486|IF_SM|IF_UNDOC},
  298.     {I_CMPXCHG486, 2, {REG32,REG32,0}, "\321\300\2\x0F\xA7\101", IF_486|IF_UNDOC},
  299.     {-1}
  300. };
  301.  
  302. static struct itemplate instrux_CMPXCHG8B[] = {
  303.     {I_CMPXCHG8B, 1, {MEMORY,0,0}, "\300\2\x0F\xC7\201", IF_PENT},
  304.     {-1}
  305. };
  306.  
  307. static struct itemplate instrux_CPUID[] = {
  308.     {I_CPUID, 0, {0,0,0}, "\2\x0F\xA2", IF_PENT},
  309.     {-1}
  310. };
  311.  
  312. static struct itemplate instrux_CWD[] = {
  313.     {I_CWD, 0, {0,0,0}, "\320\1\x99", IF_8086},
  314.     {-1}
  315. };
  316.  
  317. static struct itemplate instrux_CWDE[] = {
  318.     {I_CWDE, 0, {0,0,0}, "\321\1\x98", IF_386},
  319.     {-1}
  320. };
  321.  
  322. static struct itemplate instrux_DAA[] = {
  323.     {I_DAA, 0, {0,0,0}, "\1\x27", IF_8086},
  324.     {-1}
  325. };
  326.  
  327. static struct itemplate instrux_DAS[] = {
  328.     {I_DAS, 0, {0,0,0}, "\1\x2F", IF_8086},
  329.     {-1}
  330. };
  331.  
  332. static struct itemplate instrux_DB[] = {
  333.     {-1}
  334. };
  335.  
  336. static struct itemplate instrux_DD[] = {
  337.     {-1}
  338. };
  339.  
  340. static struct itemplate instrux_DEC[] = {
  341.     {I_DEC, 1, {REG16,0,0}, "\320\10\x48", IF_8086},
  342.     {I_DEC, 1, {REG32,0,0}, "\321\10\x48", IF_386},
  343.     {I_DEC, 1, {REGMEM|BITS8,0,0}, "\300\1\xFE\201", IF_8086},
  344.     {I_DEC, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\201", IF_8086},
  345.     {I_DEC, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\201", IF_386},
  346.     {-1}
  347. };
  348.  
  349. static struct itemplate instrux_DIV[] = {
  350.     {I_DIV, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\206", IF_8086},
  351.     {I_DIV, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\206", IF_8086},
  352.     {I_DIV, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\206", IF_386},
  353.     {-1}
  354. };
  355.  
  356. static struct itemplate instrux_DQ[] = {
  357.     {-1}
  358. };
  359.  
  360. static struct itemplate instrux_DT[] = {
  361.     {-1}
  362. };
  363.  
  364. static struct itemplate instrux_DW[] = {
  365.     {-1}
  366. };
  367.  
  368. static struct itemplate instrux_EMMS[] = {
  369.     {I_EMMS, 0, {0,0,0}, "\2\x0F\x77", IF_PENT|IF_MMX},
  370.     {-1}
  371. };
  372.  
  373. static struct itemplate instrux_ENTER[] = {
  374.     {I_ENTER, 2, {IMMEDIATE,IMMEDIATE,0}, "\1\xC8\30\25", IF_186},
  375.     {-1}
  376. };
  377.  
  378. static struct itemplate instrux_EQU[] = {
  379.     {I_EQU, 1, {IMMEDIATE,0,0}, "\0", IF_8086},
  380.     {I_EQU, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\0", IF_8086},
  381.     {-1}
  382. };
  383.  
  384. static struct itemplate instrux_F2XM1[] = {
  385.     {I_F2XM1, 0, {0,0,0}, "\2\xD9\xF0", IF_8086|IF_FPU},
  386.     {-1}
  387. };
  388.  
  389. static struct itemplate instrux_FABS[] = {
  390.     {I_FABS, 0, {0,0,0}, "\2\xD9\xE1", IF_8086|IF_FPU},
  391.     {-1}
  392. };
  393.  
  394. static struct itemplate instrux_FADD[] = {
  395.     {I_FADD, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\200", IF_8086|IF_FPU},
  396.     {I_FADD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\200", IF_8086|IF_FPU},
  397.     {I_FADD, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xC0", IF_8086|IF_FPU},
  398.     {I_FADD, 1, {FPUREG,0,0}, "\1\xD8\10\xC0", IF_8086|IF_FPU},
  399.     {I_FADD, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xC0", IF_8086|IF_FPU},
  400.     {I_FADD, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xC0", IF_8086|IF_FPU},
  401.     {-1}
  402. };
  403.  
  404. static struct itemplate instrux_FADDP[] = {
  405.     {I_FADDP, 1, {FPUREG,0,0}, "\1\xDE\10\xC0", IF_8086|IF_FPU},
  406.     {I_FADDP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xC0", IF_8086|IF_FPU},
  407.     {-1}
  408. };
  409.  
  410. static struct itemplate instrux_FBLD[] = {
  411.     {I_FBLD, 1, {MEMORY|BITS80,0,0}, "\300\1\xDF\204", IF_8086|IF_FPU},
  412.     {I_FBLD, 1, {MEMORY,0,0}, "\300\1\xDF\204", IF_8086|IF_FPU},
  413.     {-1}
  414. };
  415.  
  416. static struct itemplate instrux_FBSTP[] = {
  417.     {I_FBSTP, 1, {MEMORY|BITS80,0,0}, "\300\1\xDF\206", IF_8086|IF_FPU},
  418.     {I_FBSTP, 1, {MEMORY,0,0}, "\300\1\xDF\206", IF_8086|IF_FPU},
  419.     {-1}
  420. };
  421.  
  422. static struct itemplate instrux_FCHS[] = {
  423.     {I_FCHS, 0, {0,0,0}, "\2\xD9\xE0", IF_8086|IF_FPU},
  424.     {-1}
  425. };
  426.  
  427. static struct itemplate instrux_FCLEX[] = {
  428.     {I_FCLEX, 0, {0,0,0}, "\2\xDB\xE2", IF_8086|IF_FPU},
  429.     {-1}
  430. };
  431.  
  432. static struct itemplate instrux_FCMOVB[] = {
  433.     {I_FCMOVB, 1, {FPUREG,0,0}, "\1\xDA\10\xC0", IF_P6|IF_FPU},
  434.     {I_FCMOVB, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xC0", IF_P6|IF_FPU},
  435.     {-1}
  436. };
  437.  
  438. static struct itemplate instrux_FCMOVBE[] = {
  439.     {I_FCMOVBE, 1, {FPUREG,0,0}, "\1\xDA\10\xD0", IF_P6|IF_FPU},
  440.     {I_FCMOVBE, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xD0", IF_P6|IF_FPU},
  441.     {-1}
  442. };
  443.  
  444. static struct itemplate instrux_FCMOVE[] = {
  445.     {I_FCMOVE, 1, {FPUREG,0,0}, "\1\xDA\10\xC8", IF_P6|IF_FPU},
  446.     {I_FCMOVE, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xC8", IF_P6|IF_FPU},
  447.     {-1}
  448. };
  449.  
  450. static struct itemplate instrux_FCMOVNB[] = {
  451.     {I_FCMOVNB, 1, {FPUREG,0,0}, "\1\xDB\10\xC0", IF_P6|IF_FPU},
  452.     {I_FCMOVNB, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xC0", IF_P6|IF_FPU},
  453.     {-1}
  454. };
  455.  
  456. static struct itemplate instrux_FCMOVNBE[] = {
  457.     {I_FCMOVNBE, 1, {FPUREG,0,0}, "\1\xDB\10\xD0", IF_P6|IF_FPU},
  458.     {I_FCMOVNBE, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xD0", IF_P6|IF_FPU},
  459.     {-1}
  460. };
  461.  
  462. static struct itemplate instrux_FCMOVNE[] = {
  463.     {I_FCMOVNE, 1, {FPUREG,0,0}, "\1\xDB\10\xC8", IF_P6|IF_FPU},
  464.     {I_FCMOVNE, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xC8", IF_P6|IF_FPU},
  465.     {-1}
  466. };
  467.  
  468. static struct itemplate instrux_FCMOVNU[] = {
  469.     {I_FCMOVNU, 1, {FPUREG,0,0}, "\1\xDB\10\xD8", IF_P6|IF_FPU},
  470.     {I_FCMOVNU, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xD8", IF_P6|IF_FPU},
  471.     {-1}
  472. };
  473.  
  474. static struct itemplate instrux_FCMOVU[] = {
  475.     {I_FCMOVU, 1, {FPUREG,0,0}, "\1\xDA\10\xD8", IF_P6|IF_FPU},
  476.     {I_FCMOVU, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xD8", IF_P6|IF_FPU},
  477.     {-1}
  478. };
  479.  
  480. static struct itemplate instrux_FCOM[] = {
  481.     {I_FCOM, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\202", IF_8086|IF_FPU},
  482.     {I_FCOM, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\202", IF_8086|IF_FPU},
  483.     {I_FCOM, 1, {FPUREG,0,0}, "\1\xD8\10\xD0", IF_8086|IF_FPU},
  484.     {I_FCOM, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xD0", IF_8086|IF_FPU},
  485.     {-1}
  486. };
  487.  
  488. static struct itemplate instrux_FCOMI[] = {
  489.     {I_FCOMI, 1, {FPUREG,0,0}, "\1\xDB\10\xF0", IF_P6|IF_FPU},
  490.     {I_FCOMI, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xF0", IF_P6|IF_FPU},
  491.     {-1}
  492. };
  493.  
  494. static struct itemplate instrux_FCOMIP[] = {
  495.     {I_FCOMIP, 1, {FPUREG,0,0}, "\1\xDF\10\xF0", IF_P6|IF_FPU},
  496.     {I_FCOMIP, 2, {FPU0,FPUREG,0}, "\1\xDF\11\xF0", IF_P6|IF_FPU},
  497.     {-1}
  498. };
  499.  
  500. static struct itemplate instrux_FCOMP[] = {
  501.     {I_FCOMP, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\203", IF_8086|IF_FPU},
  502.     {I_FCOMP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\203", IF_8086|IF_FPU},
  503.     {I_FCOMP, 1, {FPUREG,0,0}, "\1\xD8\10\xD8", IF_8086|IF_FPU},
  504.     {I_FCOMP, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xD8", IF_8086|IF_FPU},
  505.     {-1}
  506. };
  507.  
  508. static struct itemplate instrux_FCOMPP[] = {
  509.     {I_FCOMPP, 0, {0,0,0}, "\2\xDE\xD9", IF_8086|IF_FPU},
  510.     {-1}
  511. };
  512.  
  513. static struct itemplate instrux_FCOS[] = {
  514.     {I_FCOS, 0, {0,0,0}, "\2\xD9\xFF", IF_386|IF_FPU},
  515.     {-1}
  516. };
  517.  
  518. static struct itemplate instrux_FDECSTP[] = {
  519.     {I_FDECSTP, 0, {0,0,0}, "\2\xD9\xF6", IF_8086|IF_FPU},
  520.     {-1}
  521. };
  522.  
  523. static struct itemplate instrux_FDISI[] = {
  524.     {I_FDISI, 0, {0,0,0}, "\2\xDB\xE1", IF_8086|IF_FPU},
  525.     {-1}
  526. };
  527.  
  528. static struct itemplate instrux_FDIV[] = {
  529.     {I_FDIV, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\206", IF_8086|IF_FPU},
  530.     {I_FDIV, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\206", IF_8086|IF_FPU},
  531.     {I_FDIV, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xF8", IF_8086|IF_FPU},
  532.     {I_FDIV, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xF8", IF_8086|IF_FPU},
  533.     {I_FDIV, 1, {FPUREG,0,0}, "\1\xD8\10\xF0", IF_8086|IF_FPU},
  534.     {I_FDIV, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xF0", IF_8086|IF_FPU},
  535.     {-1}
  536. };
  537.  
  538. static struct itemplate instrux_FDIVP[] = {
  539.     {I_FDIVP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xF8", IF_8086|IF_FPU},
  540.     {I_FDIVP, 1, {FPUREG,0,0}, "\1\xDE\10\xF8", IF_8086|IF_FPU},
  541.     {-1}
  542. };
  543.  
  544. static struct itemplate instrux_FDIVR[] = {
  545.     {I_FDIVR, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\207", IF_8086|IF_FPU},
  546.     {I_FDIVR, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\207", IF_8086|IF_FPU},
  547.     {I_FDIVR, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xF0", IF_8086|IF_FPU},
  548.     {I_FDIVR, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xF0", IF_8086|IF_FPU},
  549.     {I_FDIVR, 1, {FPUREG,0,0}, "\1\xD8\10\xF8", IF_8086|IF_FPU},
  550.     {I_FDIVR, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xF8", IF_8086|IF_FPU},
  551.     {-1}
  552. };
  553.  
  554. static struct itemplate instrux_FDIVRP[] = {
  555.     {I_FDIVRP, 1, {FPUREG,0,0}, "\1\xDE\10\xF0", IF_8086|IF_FPU},
  556.     {I_FDIVRP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xF0", IF_8086|IF_FPU},
  557.     {-1}
  558. };
  559.  
  560. static struct itemplate instrux_FENI[] = {
  561.     {I_FENI, 0, {0,0,0}, "\2\xDB\xE0", IF_8086|IF_FPU},
  562.     {-1}
  563. };
  564.  
  565. static struct itemplate instrux_FFREE[] = {
  566.     {I_FFREE, 1, {FPUREG,0,0}, "\1\xDD\10\xC0", IF_8086|IF_FPU},
  567.     {-1}
  568. };
  569.  
  570. static struct itemplate instrux_FIADD[] = {
  571.     {I_FIADD, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\200", IF_8086|IF_FPU},
  572.     {I_FIADD, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\200", IF_8086|IF_FPU},
  573.     {-1}
  574. };
  575.  
  576. static struct itemplate instrux_FICOM[] = {
  577.     {I_FICOM, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\202", IF_8086|IF_FPU},
  578.     {I_FICOM, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\202", IF_8086|IF_FPU},
  579.     {-1}
  580. };
  581.  
  582. static struct itemplate instrux_FICOMP[] = {
  583.     {I_FICOMP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\203", IF_8086|IF_FPU},
  584.     {I_FICOMP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\203", IF_8086|IF_FPU},
  585.     {-1}
  586. };
  587.  
  588. static struct itemplate instrux_FIDIV[] = {
  589.     {I_FIDIV, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\206", IF_8086|IF_FPU},
  590.     {I_FIDIV, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\206", IF_8086|IF_FPU},
  591.     {-1}
  592. };
  593.  
  594. static struct itemplate instrux_FIDIVR[] = {
  595.     {I_FIDIVR, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\207", IF_8086|IF_FPU},
  596.     {I_FIDIVR, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\207", IF_8086|IF_FPU},
  597.     {-1}
  598. };
  599.  
  600. static struct itemplate instrux_FILD[] = {
  601.     {I_FILD, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\200", IF_8086|IF_FPU},
  602.     {I_FILD, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\200", IF_8086|IF_FPU},
  603.     {I_FILD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\205", IF_8086|IF_FPU},
  604.     {-1}
  605. };
  606.  
  607. static struct itemplate instrux_FIMUL[] = {
  608.     {I_FIMUL, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\201", IF_8086|IF_FPU},
  609.     {I_FIMUL, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\201", IF_8086|IF_FPU},
  610.     {-1}
  611. };
  612.  
  613. static struct itemplate instrux_FINCSTP[] = {
  614.     {I_FINCSTP, 0, {0,0,0}, "\2\xD9\xF7", IF_8086|IF_FPU},
  615.     {-1}
  616. };
  617.  
  618. static struct itemplate instrux_FINIT[] = {
  619.     {I_FINIT, 0, {0,0,0}, "\2\xDB\xE3", IF_8086|IF_FPU},
  620.     {-1}
  621. };
  622.  
  623. static struct itemplate instrux_FIST[] = {
  624.     {I_FIST, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\202", IF_8086|IF_FPU},
  625.     {I_FIST, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\202", IF_8086|IF_FPU},
  626.     {-1}
  627. };
  628.  
  629. static struct itemplate instrux_FISTP[] = {
  630.     {I_FISTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\203", IF_8086|IF_FPU},
  631.     {I_FISTP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\203", IF_8086|IF_FPU},
  632.     {I_FISTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\207", IF_8086|IF_FPU},
  633.     {-1}
  634. };
  635.  
  636. static struct itemplate instrux_FISUB[] = {
  637.     {I_FISUB, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\204", IF_8086|IF_FPU},
  638.     {I_FISUB, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\204", IF_8086|IF_FPU},
  639.     {-1}
  640. };
  641.  
  642. static struct itemplate instrux_FISUBR[] = {
  643.     {I_FISUBR, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\205", IF_8086|IF_FPU},
  644.     {I_FISUBR, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\205", IF_8086|IF_FPU},
  645.     {-1}
  646. };
  647.  
  648. static struct itemplate instrux_FLD[] = {
  649.     {I_FLD, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\200", IF_8086|IF_FPU},
  650.     {I_FLD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\200", IF_8086|IF_FPU},
  651.     {I_FLD, 1, {MEMORY|BITS80,0,0}, "\300\1\xDB\205", IF_8086|IF_FPU},
  652.     {I_FLD, 1, {FPUREG,0,0}, "\1\xD9\10\xC0", IF_8086|IF_FPU},
  653.     {-1}
  654. };
  655.  
  656. static struct itemplate instrux_FLD1[] = {
  657.     {I_FLD1, 0, {0,0,0}, "\2\xD9\xE8", IF_8086|IF_FPU},
  658.     {-1}
  659. };
  660.  
  661. static struct itemplate instrux_FLDCW[] = {
  662.     {I_FLDCW, 1, {MEMORY,0,0}, "\300\1\xD9\205", IF_8086|IF_FPU|IF_SW},
  663.     {-1}
  664. };
  665.  
  666. static struct itemplate instrux_FLDENV[] = {
  667.     {I_FLDENV, 1, {MEMORY,0,0}, "\300\1\xD9\204", IF_8086|IF_FPU},
  668.     {-1}
  669. };
  670.  
  671. static struct itemplate instrux_FLDL2E[] = {
  672.     {I_FLDL2E, 0, {0,0,0}, "\2\xD9\xEA", IF_8086|IF_FPU},
  673.     {-1}
  674. };
  675.  
  676. static struct itemplate instrux_FLDL2T[] = {
  677.     {I_FLDL2T, 0, {0,0,0}, "\2\xD9\xE9", IF_8086|IF_FPU},
  678.     {-1}
  679. };
  680.  
  681. static struct itemplate instrux_FLDLG2[] = {
  682.     {I_FLDLG2, 0, {0,0,0}, "\2\xD9\xEC", IF_8086|IF_FPU},
  683.     {-1}
  684. };
  685.  
  686. static struct itemplate instrux_FLDLN2[] = {
  687.     {I_FLDLN2, 0, {0,0,0}, "\2\xD9\xED", IF_8086|IF_FPU},
  688.     {-1}
  689. };
  690.  
  691. static struct itemplate instrux_FLDPI[] = {
  692.     {I_FLDPI, 0, {0,0,0}, "\2\xD9\xEB", IF_8086|IF_FPU},
  693.     {-1}
  694. };
  695.  
  696. static struct itemplate instrux_FLDZ[] = {
  697.     {I_FLDZ, 0, {0,0,0}, "\2\xD9\xEE", IF_8086|IF_FPU},
  698.     {-1}
  699. };
  700.  
  701. static struct itemplate instrux_FMUL[] = {
  702.     {I_FMUL, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\201", IF_8086|IF_FPU},
  703.     {I_FMUL, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\201", IF_8086|IF_FPU},
  704.     {I_FMUL, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xC8", IF_8086|IF_FPU},
  705.     {I_FMUL, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xC8", IF_8086|IF_FPU},
  706.     {I_FMUL, 1, {FPUREG,0,0}, "\1\xD8\10\xC8", IF_8086|IF_FPU},
  707.     {I_FMUL, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xC8", IF_8086|IF_FPU},
  708.     {-1}
  709. };
  710.  
  711. static struct itemplate instrux_FMULP[] = {
  712.     {I_FMULP, 1, {FPUREG,0,0}, "\1\xDE\10\xC8", IF_8086|IF_FPU},
  713.     {I_FMULP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xC8", IF_8086|IF_FPU},
  714.     {-1}
  715. };
  716.  
  717. static struct itemplate instrux_FNOP[] = {
  718.     {I_FNOP, 0, {0,0,0}, "\2\xD9\xD0", IF_8086|IF_FPU},
  719.     {-1}
  720. };
  721.  
  722. static struct itemplate instrux_FPATAN[] = {
  723.     {I_FPATAN, 0, {0,0,0}, "\2\xD9\xF3", IF_8086|IF_FPU},
  724.     {-1}
  725. };
  726.  
  727. static struct itemplate instrux_FPREM[] = {
  728.     {I_FPREM, 0, {0,0,0}, "\2\xD9\xF8", IF_8086|IF_FPU},
  729.     {-1}
  730. };
  731.  
  732. static struct itemplate instrux_FPREM1[] = {
  733.     {I_FPREM1, 0, {0,0,0}, "\2\xD9\xF5", IF_386|IF_FPU},
  734.     {-1}
  735. };
  736.  
  737. static struct itemplate instrux_FPTAN[] = {
  738.     {I_FPTAN, 0, {0,0,0}, "\2\xD9\xF2", IF_8086|IF_FPU},
  739.     {-1}
  740. };
  741.  
  742. static struct itemplate instrux_FRNDINT[] = {
  743.     {I_FRNDINT, 0, {0,0,0}, "\2\xD9\xFC", IF_8086|IF_FPU},
  744.     {-1}
  745. };
  746.  
  747. static struct itemplate instrux_FRSTOR[] = {
  748.     {I_FRSTOR, 1, {MEMORY,0,0}, "\300\1\xDD\204", IF_8086|IF_FPU},
  749.     {-1}
  750. };
  751.  
  752. static struct itemplate instrux_FSAVE[] = {
  753.     {I_FSAVE, 1, {MEMORY,0,0}, "\300\1\xDD\206", IF_8086|IF_FPU},
  754.     {-1}
  755. };
  756.  
  757. static struct itemplate instrux_FSCALE[] = {
  758.     {I_FSCALE, 0, {0,0,0}, "\2\xD9\xFD", IF_8086|IF_FPU},
  759.     {-1}
  760. };
  761.  
  762. static struct itemplate instrux_FSETPM[] = {
  763.     {I_FSETPM, 0, {0,0,0}, "\2\xDB\xE4", IF_286|IF_FPU},
  764.     {-1}
  765. };
  766.  
  767. static struct itemplate instrux_FSIN[] = {
  768.     {I_FSIN, 0, {0,0,0}, "\2\xD9\xFE", IF_386|IF_FPU},
  769.     {-1}
  770. };
  771.  
  772. static struct itemplate instrux_FSINCOS[] = {
  773.     {I_FSINCOS, 0, {0,0,0}, "\2\xD9\xFB", IF_386|IF_FPU},
  774.     {-1}
  775. };
  776.  
  777. static struct itemplate instrux_FSQRT[] = {
  778.     {I_FSQRT, 0, {0,0,0}, "\2\xD9\xFA", IF_8086|IF_FPU},
  779.     {-1}
  780. };
  781.  
  782. static struct itemplate instrux_FST[] = {
  783.     {I_FST, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\202", IF_8086|IF_FPU},
  784.     {I_FST, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\202", IF_8086|IF_FPU},
  785.     {I_FST, 1, {FPUREG,0,0}, "\1\xDD\10\xD0", IF_8086|IF_FPU},
  786.     {-1}
  787. };
  788.  
  789. static struct itemplate instrux_FSTCW[] = {
  790.     {I_FSTCW, 1, {MEMORY,0,0}, "\300\1\xD9\207", IF_8086|IF_FPU|IF_SW},
  791.     {-1}
  792. };
  793.  
  794. static struct itemplate instrux_FSTENV[] = {
  795.     {I_FSTENV, 1, {MEMORY,0,0}, "\300\1\xD9\206", IF_8086|IF_FPU},
  796.     {-1}
  797. };
  798.  
  799. static struct itemplate instrux_FSTP[] = {
  800.     {I_FSTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\203", IF_8086|IF_FPU},
  801.     {I_FSTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\203", IF_8086|IF_FPU},
  802.     {I_FSTP, 1, {MEMORY|BITS80,0,0}, "\300\1\xDB\207", IF_8086|IF_FPU},
  803.     {I_FSTP, 1, {FPUREG,0,0}, "\1\xDD\10\xD8", IF_8086|IF_FPU},
  804.     {-1}
  805. };
  806.  
  807. static struct itemplate instrux_FSTSW[] = {
  808.     {I_FSTSW, 1, {MEMORY,0,0}, "\300\1\xDD\207", IF_8086|IF_FPU|IF_SW},
  809.     {I_FSTSW, 1, {REG_AX,0,0}, "\2\xDF\xE0", IF_286|IF_FPU},
  810.     {-1}
  811. };
  812.  
  813. static struct itemplate instrux_FSUB[] = {
  814.     {I_FSUB, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\204", IF_8086|IF_FPU},
  815.     {I_FSUB, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\204", IF_8086|IF_FPU},
  816.     {I_FSUB, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xE8", IF_8086|IF_FPU},
  817.     {I_FSUB, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xE8", IF_8086|IF_FPU},
  818.     {I_FSUB, 1, {FPUREG,0,0}, "\1\xD8\10\xE0", IF_8086|IF_FPU},
  819.     {I_FSUB, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xE0", IF_8086|IF_FPU},
  820.     {-1}
  821. };
  822.  
  823. static struct itemplate instrux_FSUBP[] = {
  824.     {I_FSUBP, 1, {FPUREG,0,0}, "\1\xDE\10\xE8", IF_8086|IF_FPU},
  825.     {I_FSUBP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xE8", IF_8086|IF_FPU},
  826.     {-1}
  827. };
  828.  
  829. static struct itemplate instrux_FSUBR[] = {
  830.     {I_FSUBR, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\205", IF_8086|IF_FPU},
  831.     {I_FSUBR, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\205", IF_8086|IF_FPU},
  832.     {I_FSUBR, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xE0", IF_8086|IF_FPU},
  833.     {I_FSUBR, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xE0", IF_8086|IF_FPU},
  834.     {I_FSUBR, 1, {FPUREG,0,0}, "\1\xD8\10\xE8", IF_8086|IF_FPU},
  835.     {I_FSUBR, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xE8", IF_8086|IF_FPU},
  836.     {-1}
  837. };
  838.  
  839. static struct itemplate instrux_FSUBRP[] = {
  840.     {I_FSUBRP, 1, {FPUREG,0,0}, "\1\xDE\10\xE0", IF_8086|IF_FPU},
  841.     {I_FSUBRP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xE0", IF_8086|IF_FPU},
  842.     {-1}
  843. };
  844.  
  845. static struct itemplate instrux_FTST[] = {
  846.     {I_FTST, 0, {0,0,0}, "\2\xD9\xE4", IF_8086|IF_FPU},
  847.     {-1}
  848. };
  849.  
  850. static struct itemplate instrux_FUCOM[] = {
  851.     {I_FUCOM, 1, {FPUREG,0,0}, "\1\xDD\10\xE0", IF_386|IF_FPU},
  852.     {-1}
  853. };
  854.  
  855. static struct itemplate instrux_FUCOMI[] = {
  856.     {I_FUCOMI, 1, {FPUREG,0,0}, "\1\xDB\10\xE8", IF_P6|IF_FPU},
  857.     {I_FUCOMI, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xE8", IF_P6|IF_FPU},
  858.     {-1}
  859. };
  860.  
  861. static struct itemplate instrux_FUCOMIP[] = {
  862.     {I_FUCOMIP, 1, {FPUREG,0,0}, "\1\xDF\10\xE8", IF_P6|IF_FPU},
  863.     {I_FUCOMIP, 2, {FPU0,FPUREG,0}, "\1\xDF\11\xE8", IF_P6|IF_FPU},
  864.     {-1}
  865. };
  866.  
  867. static struct itemplate instrux_FUCOMP[] = {
  868.     {I_FUCOMP, 1, {FPUREG,0,0}, "\1\xDD\10\xE8", IF_386|IF_FPU},
  869.     {-1}
  870. };
  871.  
  872. static struct itemplate instrux_FUCOMPP[] = {
  873.     {I_FUCOMPP, 0, {0,0,0}, "\2\xDA\xE9", IF_386|IF_FPU},
  874.     {-1}
  875. };
  876.  
  877. static struct itemplate instrux_FXAM[] = {
  878.     {I_FXAM, 0, {0,0,0}, "\2\xD9\xE5", IF_8086|IF_FPU},
  879.     {-1}
  880. };
  881.  
  882. static struct itemplate instrux_FXCH[] = {
  883.     {I_FXCH, 0, {0,0,0}, "\2\xD9\xC9", IF_8086|IF_FPU},
  884.     {I_FXCH, 1, {FPUREG,0,0}, "\1\xD9\10\xC8", IF_8086|IF_FPU},
  885.     {I_FXCH, 2, {FPUREG,FPU0,0}, "\1\xD9\10\xC8", IF_8086|IF_FPU},
  886.     {I_FXCH, 2, {FPU0,FPUREG,0}, "\1\xD9\11\xC8", IF_8086|IF_FPU},
  887.     {-1}
  888. };
  889.  
  890. static struct itemplate instrux_FXTRACT[] = {
  891.     {I_FXTRACT, 0, {0,0,0}, "\2\xD9\xF4", IF_8086|IF_FPU},
  892.     {-1}
  893. };
  894.  
  895. static struct itemplate instrux_FYL2X[] = {
  896.     {I_FYL2X, 0, {0,0,0}, "\2\xD9\xF1", IF_8086|IF_FPU},
  897.     {-1}
  898. };
  899.  
  900. static struct itemplate instrux_FYL2XP1[] = {
  901.     {I_FYL2XP1, 0, {0,0,0}, "\2\xD9\xF9", IF_8086|IF_FPU},
  902.     {-1}
  903. };
  904.  
  905. static struct itemplate instrux_HLT[] = {
  906.     {I_HLT, 0, {0,0,0}, "\1\xF4", IF_8086},
  907.     {-1}
  908. };
  909.  
  910. static struct itemplate instrux_IBTS[] = {
  911.     {I_IBTS, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA7\101", IF_386|IF_SW|IF_UNDOC},
  912.     {I_IBTS, 2, {REG16,REG16,0}, "\320\300\2\x0F\xA7\101", IF_386|IF_UNDOC},
  913.     {I_IBTS, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA7\101", IF_386|IF_SD|IF_UNDOC},
  914.     {I_IBTS, 2, {REG32,REG32,0}, "\321\300\2\x0F\xA7\101", IF_386|IF_UNDOC},
  915.     {-1}
  916. };
  917.  
  918. static struct itemplate instrux_ICEBP[] = {
  919.     {I_ICEBP, 0, {0,0,0}, "\1\xF1", IF_286|IF_UNDOC},
  920.     {-1}
  921. };
  922.  
  923. static struct itemplate instrux_IDIV[] = {
  924.     {I_IDIV, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\207", IF_8086},
  925.     {I_IDIV, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\207", IF_8086},
  926.     {I_IDIV, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\207", IF_386},
  927.     {-1}
  928. };
  929.  
  930. static struct itemplate instrux_IMUL[] = {
  931.     {I_IMUL, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\205", IF_8086},
  932.     {I_IMUL, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\205", IF_8086},
  933.     {I_IMUL, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\205", IF_386},
  934.     {I_IMUL, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xAF\110", IF_386|IF_SM},
  935.     {I_IMUL, 2, {REG16,REG16,0}, "\320\301\2\x0F\xAF\110", IF_386},
  936.     {I_IMUL, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xAF\110", IF_386|IF_SM},
  937.     {I_IMUL, 2, {REG32,REG32,0}, "\321\301\2\x0F\xAF\110", IF_386},
  938.     {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE|BITS8}, "\320\301\1\x6B\110\16", IF_286|IF_SM},
  939.     {I_IMUL, 3, {REG16,REG16,IMMEDIATE|BITS8}, "\320\301\1\x6B\110\16", IF_286},
  940.     {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE}, "\320\301\1\x69\110\32", IF_286|IF_SM},
  941.     {I_IMUL, 3, {REG16,REG16,IMMEDIATE}, "\320\301\1\x69\110\32", IF_286},
  942.     {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE|BITS8}, "\321\301\1\x6B\110\16", IF_386|IF_SM},
  943.     {I_IMUL, 3, {REG32,REG32,IMMEDIATE|BITS8}, "\321\301\1\x6B\110\16", IF_386},
  944.     {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE}, "\321\301\1\x69\110\42", IF_386|IF_SM},
  945.     {I_IMUL, 3, {REG32,REG32,IMMEDIATE}, "\321\301\1\x69\110\42", IF_386|IF_SM},
  946.     {I_IMUL, 2, {REG16,IMMEDIATE|BITS8,0}, "\320\1\x6B\100\15", IF_286},
  947.     {I_IMUL, 2, {REG16,IMMEDIATE,0}, "\320\1\x69\100\31", IF_286|IF_SM},
  948.     {I_IMUL, 2, {REG32,IMMEDIATE|BITS8,0}, "\321\1\x6B\100\15", IF_386},
  949.     {I_IMUL, 2, {REG32,IMMEDIATE,0}, "\321\1\x69\100\41", IF_386|IF_SM},
  950.     {-1}
  951. };
  952.  
  953. static struct itemplate instrux_IN[] = {
  954.     {I_IN, 2, {REG_AL,IMMEDIATE,0}, "\1\xE4\25", IF_8086},
  955.     {I_IN, 2, {REG_AX,IMMEDIATE,0}, "\320\1\xE5\25", IF_8086},
  956.     {I_IN, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\xE5\25", IF_386},
  957.     {I_IN, 2, {REG_AL,REG_DX,0}, "\1\xEC", IF_8086},
  958.     {I_IN, 2, {REG_AX,REG_DX,0}, "\320\1\xED", IF_8086},
  959.     {I_IN, 2, {REG_EAX,REG_DX,0}, "\321\1\xED", IF_386},
  960.     {-1}
  961. };
  962.  
  963. static struct itemplate instrux_INC[] = {
  964.     {I_INC, 1, {REG16,0,0}, "\320\10\x40", IF_8086},
  965.     {I_INC, 1, {REG32,0,0}, "\321\10\x40", IF_386},
  966.     {I_INC, 1, {REGMEM|BITS8,0,0}, "\300\1\xFE\200", IF_8086},
  967.     {I_INC, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\200", IF_8086},
  968.     {I_INC, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\200", IF_386},
  969.     {-1}
  970. };
  971.  
  972. static struct itemplate instrux_INCBIN[] = {
  973.     {-1}
  974. };
  975.  
  976. static struct itemplate instrux_INSB[] = {
  977.     {I_INSB, 0, {0,0,0}, "\1\x6C", IF_186},
  978.     {-1}
  979. };
  980.  
  981. static struct itemplate instrux_INSD[] = {
  982.     {I_INSD, 0, {0,0,0}, "\321\1\x6D", IF_386},
  983.     {-1}
  984. };
  985.  
  986. static struct itemplate instrux_INSW[] = {
  987.     {I_INSW, 0, {0,0,0}, "\320\1\x6D", IF_186},
  988.     {-1}
  989. };
  990.  
  991. static struct itemplate instrux_INT[] = {
  992.     {I_INT, 1, {IMMEDIATE,0,0}, "\1\xCD\24", IF_8086},
  993.     {-1}
  994. };
  995.  
  996. static struct itemplate instrux_INT01[] = {
  997.     {I_INT01, 0, {0,0,0}, "\1\xF1", IF_286|IF_UNDOC},
  998.     {-1}
  999. };
  1000.  
  1001. static struct itemplate instrux_INT1[] = {
  1002.     {I_INT1, 0, {0,0,0}, "\1\xF1", IF_286|IF_UNDOC},
  1003.     {-1}
  1004. };
  1005.  
  1006. static struct itemplate instrux_INT3[] = {
  1007.     {I_INT3, 0, {0,0,0}, "\1\xCC", IF_8086},
  1008.     {-1}
  1009. };
  1010.  
  1011. static struct itemplate instrux_INTO[] = {
  1012.     {I_INTO, 0, {0,0,0}, "\1\xCE", IF_8086},
  1013.     {-1}
  1014. };
  1015.  
  1016. static struct itemplate instrux_INVD[] = {
  1017.     {I_INVD, 0, {0,0,0}, "\2\x0F\x08", IF_486},
  1018.     {-1}
  1019. };
  1020.  
  1021. static struct itemplate instrux_INVLPG[] = {
  1022.     {I_INVLPG, 1, {MEMORY,0,0}, "\300\2\x0F\x01\207", IF_486},
  1023.     {-1}
  1024. };
  1025.  
  1026. static struct itemplate instrux_IRET[] = {
  1027.     {I_IRET, 0, {0,0,0}, "\322\1\xCF", IF_8086},
  1028.     {-1}
  1029. };
  1030.  
  1031. static struct itemplate instrux_IRETD[] = {
  1032.     {I_IRETD, 0, {0,0,0}, "\321\1\xCF", IF_386},
  1033.     {-1}
  1034. };
  1035.  
  1036. static struct itemplate instrux_IRETW[] = {
  1037.     {I_IRETW, 0, {0,0,0}, "\320\1\xCF", IF_8086},
  1038.     {-1}
  1039. };
  1040.  
  1041. static struct itemplate instrux_JCXZ[] = {
  1042.     {I_JCXZ, 1, {IMMEDIATE,0,0}, "\320\1\xE3\50", IF_8086},
  1043.     {-1}
  1044. };
  1045.  
  1046. static struct itemplate instrux_JECXZ[] = {
  1047.     {I_JECXZ, 1, {IMMEDIATE,0,0}, "\321\1\xE3\50", IF_386},
  1048.     {-1}
  1049. };
  1050.  
  1051. static struct itemplate instrux_JMP[] = {
  1052.     {I_JMP, 1, {IMMEDIATE|SHORT,0,0}, "\1\xEB\50", IF_8086},
  1053.     {I_JMP, 1, {IMMEDIATE,0,0}, "\322\1\xE9\64", IF_8086},
  1054.     {I_JMP, 1, {IMMEDIATE|FAR,0,0}, "\322\1\xEA\34\37", IF_8086},
  1055.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\322\1\xEA\35\30", IF_8086},
  1056.     {I_JMP, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "\320\1\xEA\31\30", IF_8086},
  1057.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "\320\1\xEA\31\30", IF_8086},
  1058.     {I_JMP, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "\321\1\xEA\41\30", IF_386},
  1059.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "\321\1\xEA\41\30", IF_386},
  1060.     {I_JMP, 1, {MEMORY|FAR,0,0}, "\322\300\1\xFF\205", IF_8086},
  1061.     {I_JMP, 1, {MEMORY|BITS16|FAR,0,0}, "\320\300\1\xFF\205", IF_8086},
  1062.     {I_JMP, 1, {MEMORY|BITS32|FAR,0,0}, "\321\300\1\xFF\205", IF_386},
  1063.     {I_JMP, 1, {MEMORY|NEAR,0,0}, "\322\300\1\xFF\204", IF_8086},
  1064.     {I_JMP, 1, {MEMORY|BITS16|NEAR,0,0}, "\320\300\1\xFF\204", IF_8086},
  1065.     {I_JMP, 1, {MEMORY|BITS32|NEAR,0,0}, "\321\300\1\xFF\204", IF_386},
  1066.     {I_JMP, 1, {REG16,0,0}, "\320\300\1\xFF\204", IF_8086},
  1067.     {I_JMP, 1, {REG32,0,0}, "\321\300\1\xFF\204", IF_386},
  1068.     {I_JMP, 1, {MEMORY,0,0}, "\322\300\1\xFF\204", IF_8086},
  1069.     {I_JMP, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\204", IF_8086},
  1070.     {I_JMP, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\204", IF_386},
  1071.     {-1}
  1072. };
  1073.  
  1074. static struct itemplate instrux_LAHF[] = {
  1075.     {I_LAHF, 0, {0,0,0}, "\1\x9F", IF_8086},
  1076.     {-1}
  1077. };
  1078.  
  1079. static struct itemplate instrux_LAR[] = {
  1080.     {I_LAR, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x02\110", IF_286|IF_PRIV|IF_SM},
  1081.     {I_LAR, 2, {REG16,REG16,0}, "\320\301\2\x0F\x02\110", IF_286|IF_PRIV},
  1082.     {I_LAR, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x02\110", IF_286|IF_PRIV|IF_SM},
  1083.     {I_LAR, 2, {REG32,REG32,0}, "\321\301\2\x0F\x02\110", IF_286|IF_PRIV},
  1084.     {-1}
  1085. };
  1086.  
  1087. static struct itemplate instrux_LDS[] = {
  1088.     {I_LDS, 2, {REG16,MEMORY,0}, "\320\301\1\xC5\110", IF_8086},
  1089.     {I_LDS, 2, {REG32,MEMORY,0}, "\321\301\1\xC5\110", IF_8086},
  1090.     {-1}
  1091. };
  1092.  
  1093. static struct itemplate instrux_LEA[] = {
  1094.     {I_LEA, 2, {REG16,MEMORY,0}, "\320\301\1\x8D\110", IF_8086},
  1095.     {I_LEA, 2, {REG32,MEMORY,0}, "\321\301\1\x8D\110", IF_8086},
  1096.     {-1}
  1097. };
  1098.  
  1099. static struct itemplate instrux_LEAVE[] = {
  1100.     {I_LEAVE, 0, {0,0,0}, "\1\xC9", IF_186},
  1101.     {-1}
  1102. };
  1103.  
  1104. static struct itemplate instrux_LES[] = {
  1105.     {I_LES, 2, {REG16,MEMORY,0}, "\320\301\1\xC4\110", IF_8086},
  1106.     {I_LES, 2, {REG32,MEMORY,0}, "\321\301\1\xC4\110", IF_8086},
  1107.     {-1}
  1108. };
  1109.  
  1110. static struct itemplate instrux_LFS[] = {
  1111.     {I_LFS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB4\110", IF_386},
  1112.     {I_LFS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB4\110", IF_386},
  1113.     {-1}
  1114. };
  1115.  
  1116. static struct itemplate instrux_LGDT[] = {
  1117.     {I_LGDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\202", IF_286|IF_PRIV},
  1118.     {-1}
  1119. };
  1120.  
  1121. static struct itemplate instrux_LGS[] = {
  1122.     {I_LGS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB5\110", IF_386},
  1123.     {I_LGS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB5\110", IF_386},
  1124.     {-1}
  1125. };
  1126.  
  1127. static struct itemplate instrux_LIDT[] = {
  1128.     {I_LIDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\203", IF_286|IF_PRIV},
  1129.     {-1}
  1130. };
  1131.  
  1132. static struct itemplate instrux_LLDT[] = {
  1133.     {I_LLDT, 1, {MEMORY,0,0}, "\300\1\x0F\17\202", IF_286|IF_PRIV},
  1134.     {I_LLDT, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\202", IF_286|IF_PRIV},
  1135.     {I_LLDT, 1, {REG16,0,0}, "\300\1\x0F\17\202", IF_286|IF_PRIV},
  1136.     {-1}
  1137. };
  1138.  
  1139. static struct itemplate instrux_LMSW[] = {
  1140.     {I_LMSW, 1, {MEMORY,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
  1141.     {I_LMSW, 1, {MEMORY|BITS16,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
  1142.     {I_LMSW, 1, {REG16,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
  1143.     {-1}
  1144. };
  1145.  
  1146. static struct itemplate instrux_LOADALL[] = {
  1147.     {I_LOADALL, 0, {0,0,0}, "\2\x0F\x07", IF_386|IF_UNDOC},
  1148.     {-1}
  1149. };
  1150.  
  1151. static struct itemplate instrux_LOADALL286[] = {
  1152.     {I_LOADALL286, 0, {0,0,0}, "\2\x0F\x05", IF_286|IF_UNDOC},
  1153.     {-1}
  1154. };
  1155.  
  1156. static struct itemplate instrux_LODSB[] = {
  1157.     {I_LODSB, 0, {0,0,0}, "\1\xAC", IF_8086},
  1158.     {-1}
  1159. };
  1160.  
  1161. static struct itemplate instrux_LODSD[] = {
  1162.     {I_LODSD, 0, {0,0,0}, "\321\1\xAD", IF_386},
  1163.     {-1}
  1164. };
  1165.  
  1166. static struct itemplate instrux_LODSW[] = {
  1167.     {I_LODSW, 0, {0,0,0}, "\320\1\xAD", IF_8086},
  1168.     {-1}
  1169. };
  1170.  
  1171. static struct itemplate instrux_LOOP[] = {
  1172.     {I_LOOP, 1, {IMMEDIATE,0,0}, "\312\1\xE2\50", IF_8086},
  1173.     {I_LOOP, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE2\50", IF_8086},
  1174.     {I_LOOP, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE2\50", IF_386},
  1175.     {-1}
  1176. };
  1177.  
  1178. static struct itemplate instrux_LOOPE[] = {
  1179.     {I_LOOPE, 1, {IMMEDIATE,0,0}, "\312\1\xE1\50", IF_8086},
  1180.     {I_LOOPE, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE1\50", IF_8086},
  1181.     {I_LOOPE, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE1\50", IF_386},
  1182.     {-1}
  1183. };
  1184.  
  1185. static struct itemplate instrux_LOOPNE[] = {
  1186.     {I_LOOPNE, 1, {IMMEDIATE,0,0}, "\312\1\xE0\50", IF_8086},
  1187.     {I_LOOPNE, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE0\50", IF_8086},
  1188.     {I_LOOPNE, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE0\50", IF_386},
  1189.     {-1}
  1190. };
  1191.  
  1192. static struct itemplate instrux_LOOPNZ[] = {
  1193.     {I_LOOPNZ, 1, {IMMEDIATE,0,0}, "\312\1\xE0\50", IF_8086},
  1194.     {I_LOOPNZ, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE0\50", IF_8086},
  1195.     {I_LOOPNZ, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE0\50", IF_386},
  1196.     {-1}
  1197. };
  1198.  
  1199. static struct itemplate instrux_LOOPZ[] = {
  1200.     {I_LOOPZ, 1, {IMMEDIATE,0,0}, "\312\1\xE1\50", IF_8086},
  1201.     {I_LOOPZ, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE1\50", IF_8086},
  1202.     {I_LOOPZ, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE1\50", IF_386},
  1203.     {-1}
  1204. };
  1205.  
  1206. static struct itemplate instrux_LSL[] = {
  1207.     {I_LSL, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x03\110", IF_286|IF_PRIV|IF_SM},
  1208.     {I_LSL, 2, {REG16,REG16,0}, "\320\301\2\x0F\x03\110", IF_286|IF_PRIV},
  1209.     {I_LSL, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x03\110", IF_286|IF_PRIV|IF_SM},
  1210.     {I_LSL, 2, {REG32,REG32,0}, "\321\301\2\x0F\x03\110", IF_286|IF_PRIV},
  1211.     {-1}
  1212. };
  1213.  
  1214. static struct itemplate instrux_LSS[] = {
  1215.     {I_LSS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB2\110", IF_386},
  1216.     {I_LSS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB2\110", IF_386},
  1217.     {-1}
  1218. };
  1219.  
  1220. static struct itemplate instrux_LTR[] = {
  1221.     {I_LTR, 1, {MEMORY,0,0}, "\300\1\x0F\17\203", IF_286|IF_PRIV},
  1222.     {I_LTR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\203", IF_286|IF_PRIV},
  1223.     {I_LTR, 1, {REG16,0,0}, "\300\1\x0F\17\203", IF_286|IF_PRIV},
  1224.     {-1}
  1225. };
  1226.  
  1227. static struct itemplate instrux_MOV[] = {
  1228.     {I_MOV, 2, {MEMORY,REG_CS,0}, "\300\1\x8C\101", IF_8086|IF_SM},
  1229.     {I_MOV, 2, {MEMORY,REG_DESS,0}, "\300\1\x8C\101", IF_8086|IF_SM},
  1230.     {I_MOV, 2, {MEMORY,REG_FSGS,0}, "\300\1\x8C\101", IF_386|IF_SM},
  1231.     {I_MOV, 2, {REG16,REG_CS,0}, "\300\1\x8C\101", IF_8086},
  1232.     {I_MOV, 2, {REG16,REG_DESS,0}, "\300\1\x8C\101", IF_8086},
  1233.     {I_MOV, 2, {REG16,REG_FSGS,0}, "\300\1\x8C\101", IF_386},
  1234.     {I_MOV, 2, {REG_DESS,MEMORY,0}, "\301\1\x8E\110", IF_8086|IF_SM},
  1235.     {I_MOV, 2, {REG_DESS,REG16,0}, "\301\1\x8E\110", IF_8086},
  1236.     {I_MOV, 2, {REG_FSGS,MEMORY,0}, "\301\1\x8E\110", IF_386|IF_SM},
  1237.     {I_MOV, 2, {REG_FSGS,REG16,0}, "\301\1\x8E\110", IF_386},
  1238.     {I_MOV, 2, {REG_AL,MEM_OFFS,0}, "\301\1\xA0\35", IF_8086|IF_SM},
  1239.     {I_MOV, 2, {REG_AX,MEM_OFFS,0}, "\301\320\1\xA1\35", IF_8086|IF_SM},
  1240.     {I_MOV, 2, {REG_EAX,MEM_OFFS,0}, "\301\321\1\xA1\35", IF_386|IF_SM},
  1241.     {I_MOV, 2, {MEM_OFFS,REG_AL,0}, "\300\1\xA2\34", IF_8086|IF_SM},
  1242.     {I_MOV, 2, {MEM_OFFS,REG_AX,0}, "\300\320\1\xA3\34", IF_8086|IF_SM},
  1243.     {I_MOV, 2, {MEM_OFFS,REG_EAX,0}, "\300\321\1\xA3\34", IF_386|IF_SM},
  1244.     {I_MOV, 2, {REG32,REG_CR4,0}, "\2\x0F\x20\204", IF_PENT},
  1245.     {I_MOV, 2, {REG32,REG_CREG,0}, "\2\x0F\x20\101", IF_386},
  1246.     {I_MOV, 2, {REG32,REG_DREG,0}, "\2\x0F\x21\101", IF_386},
  1247.     {I_MOV, 2, {REG32,REG_TREG,0}, "\2\x0F\x24\101", IF_386},
  1248.     {I_MOV, 2, {REG_CR4,REG32,0}, "\2\x0F\x22\214", IF_PENT},
  1249.     {I_MOV, 2, {REG_CREG,REG32,0}, "\2\x0F\x22\110", IF_386},
  1250.     {I_MOV, 2, {REG_DREG,REG32,0}, "\2\x0F\x23\110", IF_386},
  1251.     {I_MOV, 2, {REG_TREG,REG32,0}, "\2\x0F\x26\110", IF_386},
  1252.     {I_MOV, 2, {MEMORY,REG8,0}, "\300\1\x88\101", IF_8086|IF_SM},
  1253.     {I_MOV, 2, {REG8,REG8,0}, "\300\1\x88\101", IF_8086},
  1254.     {I_MOV, 2, {MEMORY,REG16,0}, "\320\300\1\x89\101", IF_8086|IF_SM},
  1255.     {I_MOV, 2, {REG16,REG16,0}, "\320\300\1\x89\101", IF_8086},
  1256.     {I_MOV, 2, {MEMORY,REG32,0}, "\321\300\1\x89\101", IF_386|IF_SM},
  1257.     {I_MOV, 2, {REG32,REG32,0}, "\321\300\1\x89\101", IF_386},
  1258.     {I_MOV, 2, {REG8,MEMORY,0}, "\301\1\x8A\110", IF_8086|IF_SM},
  1259.     {I_MOV, 2, {REG8,REG8,0}, "\301\1\x8A\110", IF_8086},
  1260.     {I_MOV, 2, {REG16,MEMORY,0}, "\320\301\1\x8B\110", IF_8086|IF_SM},
  1261.     {I_MOV, 2, {REG16,REG16,0}, "\320\301\1\x8B\110", IF_8086},
  1262.     {I_MOV, 2, {REG32,MEMORY,0}, "\321\301\1\x8B\110", IF_386|IF_SM},
  1263.     {I_MOV, 2, {REG32,REG32,0}, "\321\301\1\x8B\110", IF_386},
  1264.     {I_MOV, 2, {REG8,IMMEDIATE,0}, "\10\xB0\21", IF_8086|IF_SM},
  1265.     {I_MOV, 2, {REG16,IMMEDIATE,0}, "\320\10\xB8\31", IF_8086|IF_SM},
  1266.     {I_MOV, 2, {REG32,IMMEDIATE,0}, "\321\10\xB8\41", IF_386|IF_SM},
  1267.     {I_MOV, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC6\200\21", IF_8086|IF_SM},
  1268.     {I_MOV, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC7\200\31", IF_8086|IF_SM},
  1269.     {I_MOV, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC7\200\41", IF_386|IF_SM},
  1270.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\xC6\200\21", IF_8086|IF_SM},
  1271.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\xC7\200\31", IF_8086|IF_SM},
  1272.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\xC7\200\41", IF_386|IF_SM},
  1273.     {-1}
  1274. };
  1275.  
  1276. static struct itemplate instrux_MOVD[] = {
  1277.     {I_MOVD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6E\110", IF_PENT|IF_MMX|IF_SD},
  1278.     {I_MOVD, 2, {MMXREG,REG32,0}, "\2\x0F\x6E\110", IF_PENT|IF_MMX},
  1279.     {I_MOVD, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\x7E\101", IF_PENT|IF_MMX|IF_SD},
  1280.     {I_MOVD, 2, {REG32,MMXREG,0}, "\2\x0F\x7E\101", IF_PENT|IF_MMX},
  1281.     {-1}
  1282. };
  1283.  
  1284. static struct itemplate instrux_MOVQ[] = {
  1285.     {I_MOVQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6F\110", IF_PENT|IF_MMX|IF_SM},
  1286.     {I_MOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6F\110", IF_PENT|IF_MMX},
  1287.     {I_MOVQ, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\x7F\101", IF_PENT|IF_MMX|IF_SM},
  1288.     {I_MOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x7F\101", IF_PENT|IF_MMX},
  1289.     {-1}
  1290. };
  1291.  
  1292. static struct itemplate instrux_MOVSB[] = {
  1293.     {I_MOVSB, 0, {0,0,0}, "\1\xA4", IF_8086},
  1294.     {-1}
  1295. };
  1296.  
  1297. static struct itemplate instrux_MOVSD[] = {
  1298.     {I_MOVSD, 0, {0,0,0}, "\321\1\xA5", IF_386},
  1299.     {-1}
  1300. };
  1301.  
  1302. static struct itemplate instrux_MOVSW[] = {
  1303.     {I_MOVSW, 0, {0,0,0}, "\320\1\xA5", IF_8086},
  1304.     {-1}
  1305. };
  1306.  
  1307. static struct itemplate instrux_MOVSX[] = {
  1308.     {I_MOVSX, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBE\110", IF_386|IF_SB},
  1309.     {I_MOVSX, 2, {REG16,REG8,0}, "\320\301\2\x0F\xBE\110", IF_386},
  1310.     {I_MOVSX, 2, {REG32,REGMEM|BITS8,0}, "\321\301\2\x0F\xBE\110", IF_386},
  1311.     {I_MOVSX, 2, {REG32,REGMEM|BITS16,0}, "\321\301\2\x0F\xBF\110", IF_386},
  1312.     {-1}
  1313. };
  1314.  
  1315. static struct itemplate instrux_MOVZX[] = {
  1316.     {I_MOVZX, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB6\110", IF_386|IF_SB},
  1317.     {I_MOVZX, 2, {REG16,REG8,0}, "\320\301\2\x0F\xB6\110", IF_386},
  1318.     {I_MOVZX, 2, {REG32,REGMEM|BITS8,0}, "\321\301\2\x0F\xB6\110", IF_386},
  1319.     {I_MOVZX, 2, {REG32,REGMEM|BITS16,0}, "\321\301\2\x0F\xB7\110", IF_386},
  1320.     {-1}
  1321. };
  1322.  
  1323. static struct itemplate instrux_MUL[] = {
  1324.     {I_MUL, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\204", IF_8086},
  1325.     {I_MUL, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\204", IF_8086},
  1326.     {I_MUL, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\204", IF_386},
  1327.     {-1}
  1328. };
  1329.  
  1330. static struct itemplate instrux_NEG[] = {
  1331.     {I_NEG, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\203", IF_8086},
  1332.     {I_NEG, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\203", IF_8086},
  1333.     {I_NEG, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\203", IF_386},
  1334.     {-1}
  1335. };
  1336.  
  1337. static struct itemplate instrux_NOP[] = {
  1338.     {I_NOP, 0, {0,0,0}, "\1\x90", IF_8086},
  1339.     {-1}
  1340. };
  1341.  
  1342. static struct itemplate instrux_NOT[] = {
  1343.     {I_NOT, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\202", IF_8086},
  1344.     {I_NOT, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\202", IF_8086},
  1345.     {I_NOT, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\202", IF_386},
  1346.     {-1}
  1347. };
  1348.  
  1349. static struct itemplate instrux_OR[] = {
  1350.     {I_OR, 2, {MEMORY,REG8,0}, "\300\1\x08\101", IF_8086|IF_SM},
  1351.     {I_OR, 2, {REG8,REG8,0}, "\300\1\x08\101", IF_8086},
  1352.     {I_OR, 2, {MEMORY,REG16,0}, "\320\300\1\x09\101", IF_8086|IF_SM},
  1353.     {I_OR, 2, {REG16,REG16,0}, "\320\300\1\x09\101", IF_8086},
  1354.     {I_OR, 2, {MEMORY,REG32,0}, "\321\300\1\x09\101", IF_386|IF_SM},
  1355.     {I_OR, 2, {REG32,REG32,0}, "\321\300\1\x09\101", IF_386},
  1356.     {I_OR, 2, {REG8,MEMORY,0}, "\301\1\x0A\110", IF_8086|IF_SM},
  1357.     {I_OR, 2, {REG8,REG8,0}, "\301\1\x0A\110", IF_8086},
  1358.     {I_OR, 2, {REG16,MEMORY,0}, "\320\301\1\x0B\110", IF_8086|IF_SM},
  1359.     {I_OR, 2, {REG16,REG16,0}, "\320\301\1\x0B\110", IF_8086},
  1360.     {I_OR, 2, {REG32,MEMORY,0}, "\321\301\1\x0B\110", IF_386|IF_SM},
  1361.     {I_OR, 2, {REG32,REG32,0}, "\321\301\1\x0B\110", IF_386},
  1362.     {I_OR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\201\15", IF_8086},
  1363.     {I_OR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\201\15", IF_386},
  1364.     {I_OR, 2, {REG_AL,IMMEDIATE,0}, "\1\x0C\21", IF_8086|IF_SM},
  1365.     {I_OR, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x0D\31", IF_8086|IF_SM},
  1366.     {I_OR, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x0D\41", IF_386|IF_SM},
  1367.     {I_OR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\201\21", IF_8086|IF_SM},
  1368.     {I_OR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\201\31", IF_8086|IF_SM},
  1369.     {I_OR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\201\41", IF_386|IF_SM},
  1370.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\201\21", IF_8086|IF_SM},
  1371.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\201\31", IF_8086|IF_SM},
  1372.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\201\41", IF_386|IF_SM},
  1373.     {-1}
  1374. };
  1375.  
  1376. static struct itemplate instrux_OUT[] = {
  1377.     {I_OUT, 2, {IMMEDIATE,REG_AL,0}, "\1\xE6\24", IF_8086},
  1378.     {I_OUT, 2, {IMMEDIATE,REG_AX,0}, "\320\1\xE7\24", IF_8086},
  1379.     {I_OUT, 2, {IMMEDIATE,REG_EAX,0}, "\321\1\xE7\24", IF_386},
  1380.     {I_OUT, 2, {REG_DX,REG_AL,0}, "\1\xEE", IF_8086},
  1381.     {I_OUT, 2, {REG_DX,REG_AX,0}, "\320\1\xEF", IF_8086},
  1382.     {I_OUT, 2, {REG_DX,REG_EAX,0}, "\321\1\xEF", IF_386},
  1383.     {-1}
  1384. };
  1385.  
  1386. static struct itemplate instrux_OUTSB[] = {
  1387.     {I_OUTSB, 0, {0,0,0}, "\1\x6E", IF_186},
  1388.     {-1}
  1389. };
  1390.  
  1391. static struct itemplate instrux_OUTSD[] = {
  1392.     {I_OUTSD, 0, {0,0,0}, "\321\1\x6F", IF_386},
  1393.     {-1}
  1394. };
  1395.  
  1396. static struct itemplate instrux_OUTSW[] = {
  1397.     {I_OUTSW, 0, {0,0,0}, "\320\1\x6F", IF_186},
  1398.     {-1}
  1399. };
  1400.  
  1401. static struct itemplate instrux_PACKSSDW[] = {
  1402.     {I_PACKSSDW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6B\110", IF_PENT|IF_MMX|IF_SM},
  1403.     {I_PACKSSDW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6B\110", IF_PENT|IF_MMX},
  1404.     {-1}
  1405. };
  1406.  
  1407. static struct itemplate instrux_PACKSSWB[] = {
  1408.     {I_PACKSSWB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x63\110", IF_PENT|IF_MMX|IF_SM},
  1409.     {I_PACKSSWB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x63\110", IF_PENT|IF_MMX},
  1410.     {-1}
  1411. };
  1412.  
  1413. static struct itemplate instrux_PACKUSWB[] = {
  1414.     {I_PACKUSWB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x67\110", IF_PENT|IF_MMX|IF_SM},
  1415.     {I_PACKUSWB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x67\110", IF_PENT|IF_MMX},
  1416.     {-1}
  1417. };
  1418.  
  1419. static struct itemplate instrux_PADDB[] = {
  1420.     {I_PADDB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFC\110", IF_PENT|IF_MMX|IF_SM},
  1421.     {I_PADDB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFC\110", IF_PENT|IF_MMX},
  1422.     {-1}
  1423. };
  1424.  
  1425. static struct itemplate instrux_PADDD[] = {
  1426.     {I_PADDD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFE\110", IF_PENT|IF_MMX|IF_SM},
  1427.     {I_PADDD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFE\110", IF_PENT|IF_MMX},
  1428.     {-1}
  1429. };
  1430.  
  1431. static struct itemplate instrux_PADDSB[] = {
  1432.     {I_PADDSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEC\110", IF_PENT|IF_MMX|IF_SM},
  1433.     {I_PADDSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEC\110", IF_PENT|IF_MMX},
  1434.     {-1}
  1435. };
  1436.  
  1437. static struct itemplate instrux_PADDSW[] = {
  1438.     {I_PADDSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xED\110", IF_PENT|IF_MMX|IF_SM},
  1439.     {I_PADDSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xED\110", IF_PENT|IF_MMX},
  1440.     {-1}
  1441. };
  1442.  
  1443. static struct itemplate instrux_PADDUSB[] = {
  1444.     {I_PADDUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDC\110", IF_PENT|IF_MMX|IF_SM},
  1445.     {I_PADDUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDC\110", IF_PENT|IF_MMX},
  1446.     {-1}
  1447. };
  1448.  
  1449. static struct itemplate instrux_PADDUSW[] = {
  1450.     {I_PADDUSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDD\110", IF_PENT|IF_MMX|IF_SM},
  1451.     {I_PADDUSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDD\110", IF_PENT|IF_MMX},
  1452.     {-1}
  1453. };
  1454.  
  1455. static struct itemplate instrux_PADDW[] = {
  1456.     {I_PADDW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFD\110", IF_PENT|IF_MMX|IF_SM},
  1457.     {I_PADDW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFD\110", IF_PENT|IF_MMX},
  1458.     {-1}
  1459. };
  1460.  
  1461. static struct itemplate instrux_PAND[] = {
  1462.     {I_PAND, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDB\110", IF_PENT|IF_MMX|IF_SM},
  1463.     {I_PAND, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDB\110", IF_PENT|IF_MMX},
  1464.     {-1}
  1465. };
  1466.  
  1467. static struct itemplate instrux_PANDN[] = {
  1468.     {I_PANDN, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDF\110", IF_PENT|IF_MMX|IF_SM},
  1469.     {I_PANDN, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDF\110", IF_PENT|IF_MMX},
  1470.     {-1}
  1471. };
  1472.  
  1473. static struct itemplate instrux_PCMPEQB[] = {
  1474.     {I_PCMPEQB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x74\110", IF_PENT|IF_MMX|IF_SM},
  1475.     {I_PCMPEQB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x74\110", IF_PENT|IF_MMX},
  1476.     {-1}
  1477. };
  1478.  
  1479. static struct itemplate instrux_PCMPEQD[] = {
  1480.     {I_PCMPEQD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x76\110", IF_PENT|IF_MMX|IF_SM},
  1481.     {I_PCMPEQD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x76\110", IF_PENT|IF_MMX},
  1482.     {-1}
  1483. };
  1484.  
  1485. static struct itemplate instrux_PCMPEQW[] = {
  1486.     {I_PCMPEQW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x75\110", IF_PENT|IF_MMX|IF_SM},
  1487.     {I_PCMPEQW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x75\110", IF_PENT|IF_MMX},
  1488.     {-1}
  1489. };
  1490.  
  1491. static struct itemplate instrux_PCMPGTB[] = {
  1492.     {I_PCMPGTB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x64\110", IF_PENT|IF_MMX|IF_SM},
  1493.     {I_PCMPGTB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x64\110", IF_PENT|IF_MMX},
  1494.     {-1}
  1495. };
  1496.  
  1497. static struct itemplate instrux_PCMPGTD[] = {
  1498.     {I_PCMPGTD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x66\110", IF_PENT|IF_MMX|IF_SM},
  1499.     {I_PCMPGTD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x66\110", IF_PENT|IF_MMX},
  1500.     {-1}
  1501. };
  1502.  
  1503. static struct itemplate instrux_PCMPGTW[] = {
  1504.     {I_PCMPGTW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x65\110", IF_PENT|IF_MMX|IF_SM},
  1505.     {I_PCMPGTW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x65\110", IF_PENT|IF_MMX},
  1506.     {-1}
  1507. };
  1508.  
  1509. static struct itemplate instrux_PMADDWD[] = {
  1510.     {I_PMADDWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF5\110", IF_PENT|IF_MMX|IF_SM},
  1511.     {I_PMADDWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF5\110", IF_PENT|IF_MMX},
  1512.     {-1}
  1513. };
  1514.  
  1515. static struct itemplate instrux_PMULHW[] = {
  1516.     {I_PMULHW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE5\110", IF_PENT|IF_MMX|IF_SM},
  1517.     {I_PMULHW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE5\110", IF_PENT|IF_MMX},
  1518.     {-1}
  1519. };
  1520.  
  1521. static struct itemplate instrux_PMULLW[] = {
  1522.     {I_PMULLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD5\110", IF_PENT|IF_MMX|IF_SM},
  1523.     {I_PMULLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD5\110", IF_PENT|IF_MMX},
  1524.     {-1}
  1525. };
  1526.  
  1527. static struct itemplate instrux_POP[] = {
  1528.     {I_POP, 1, {MEMORY|BITS16,0,0}, "\320\300\1\x8F\200", IF_8086},
  1529.     {I_POP, 1, {MEMORY|BITS32,0,0}, "\321\300\1\x8F\200", IF_386},
  1530.     {I_POP, 1, {REG_CS,0,0}, "\1\x0F", IF_8086|IF_UNDOC},
  1531.     {I_POP, 1, {REG_DESS,0,0}, "\4", IF_8086},
  1532.     {I_POP, 1, {REG_FSGS,0,0}, "\1\x0F\5", IF_386},
  1533.     {I_POP, 1, {REG16,0,0}, "\320\10\x58", IF_8086},
  1534.     {I_POP, 1, {REG32,0,0}, "\321\10\x58", IF_386},
  1535.     {-1}
  1536. };
  1537.  
  1538. static struct itemplate instrux_POPA[] = {
  1539.     {I_POPA, 0, {0,0,0}, "\322\1\x61", IF_186},
  1540.     {-1}
  1541. };
  1542.  
  1543. static struct itemplate instrux_POPAD[] = {
  1544.     {I_POPAD, 0, {0,0,0}, "\321\1\x61", IF_386},
  1545.     {-1}
  1546. };
  1547.  
  1548. static struct itemplate instrux_POPAW[] = {
  1549.     {I_POPAW, 0, {0,0,0}, "\320\1\x61", IF_186},
  1550.     {-1}
  1551. };
  1552.  
  1553. static struct itemplate instrux_POPF[] = {
  1554.     {I_POPF, 0, {0,0,0}, "\322\1\x9D", IF_186},
  1555.     {-1}
  1556. };
  1557.  
  1558. static struct itemplate instrux_POPFD[] = {
  1559.     {I_POPFD, 0, {0,0,0}, "\321\1\x9D", IF_386},
  1560.     {-1}
  1561. };
  1562.  
  1563. static struct itemplate instrux_POPFW[] = {
  1564.     {I_POPFW, 0, {0,0,0}, "\320\1\x9D", IF_186},
  1565.     {-1}
  1566. };
  1567.  
  1568. static struct itemplate instrux_POR[] = {
  1569.     {I_POR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEB\110", IF_PENT|IF_MMX|IF_SM},
  1570.     {I_POR, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEB\110", IF_PENT|IF_MMX},
  1571.     {-1}
  1572. };
  1573.  
  1574. static struct itemplate instrux_PSLLD[] = {
  1575.     {I_PSLLD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF2\110", IF_PENT|IF_MMX|IF_SM},
  1576.     {I_PSLLD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF2\110", IF_PENT|IF_MMX},
  1577.     {I_PSLLD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\206\25", IF_PENT|IF_MMX},
  1578.     {-1}
  1579. };
  1580.  
  1581. static struct itemplate instrux_PSLLQ[] = {
  1582.     {I_PSLLQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF3\110", IF_PENT|IF_MMX|IF_SM},
  1583.     {I_PSLLQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF3\110", IF_PENT|IF_MMX},
  1584.     {I_PSLLQ, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x73\206\25", IF_PENT|IF_MMX},
  1585.     {-1}
  1586. };
  1587.  
  1588. static struct itemplate instrux_PSLLW[] = {
  1589.     {I_PSLLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF1\110", IF_PENT|IF_MMX|IF_SM},
  1590.     {I_PSLLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF1\110", IF_PENT|IF_MMX},
  1591.     {I_PSLLW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\206\25", IF_PENT|IF_MMX},
  1592.     {-1}
  1593. };
  1594.  
  1595. static struct itemplate instrux_PSRAD[] = {
  1596.     {I_PSRAD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE2\110", IF_PENT|IF_MMX|IF_SM},
  1597.     {I_PSRAD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE2\110", IF_PENT|IF_MMX},
  1598.     {I_PSRAD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\204\25", IF_PENT|IF_MMX},
  1599.     {-1}
  1600. };
  1601.  
  1602. static struct itemplate instrux_PSRAW[] = {
  1603.     {I_PSRAW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE1\110", IF_PENT|IF_MMX|IF_SM},
  1604.     {I_PSRAW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE1\110", IF_PENT|IF_MMX},
  1605.     {I_PSRAW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\204\25", IF_PENT|IF_MMX},
  1606.     {-1}
  1607. };
  1608.  
  1609. static struct itemplate instrux_PSRLD[] = {
  1610.     {I_PSRLD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD2\110", IF_PENT|IF_MMX|IF_SM},
  1611.     {I_PSRLD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD2\110", IF_PENT|IF_MMX},
  1612.     {I_PSRLD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\202\25", IF_PENT|IF_MMX},
  1613.     {-1}
  1614. };
  1615.  
  1616. static struct itemplate instrux_PSRLQ[] = {
  1617.     {I_PSRLQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD3\110", IF_PENT|IF_MMX|IF_SM},
  1618.     {I_PSRLQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD3\110", IF_PENT|IF_MMX},
  1619.     {I_PSRLQ, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x73\202\25", IF_PENT|IF_MMX},
  1620.     {-1}
  1621. };
  1622.  
  1623. static struct itemplate instrux_PSRLW[] = {
  1624.     {I_PSRLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD1\110", IF_PENT|IF_MMX|IF_SM},
  1625.     {I_PSRLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD1\110", IF_PENT|IF_MMX},
  1626.     {I_PSRLW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\202\25", IF_PENT|IF_MMX},
  1627.     {-1}
  1628. };
  1629.  
  1630. static struct itemplate instrux_PSUBB[] = {
  1631.     {I_PSUBB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF8\110", IF_PENT|IF_MMX|IF_SM},
  1632.     {I_PSUBB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF8\110", IF_PENT|IF_MMX},
  1633.     {-1}
  1634. };
  1635.  
  1636. static struct itemplate instrux_PSUBD[] = {
  1637.     {I_PSUBD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFA\110", IF_PENT|IF_MMX|IF_SM},
  1638.     {I_PSUBD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFA\110", IF_PENT|IF_MMX},
  1639.     {-1}
  1640. };
  1641.  
  1642. static struct itemplate instrux_PSUBSB[] = {
  1643.     {I_PSUBSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE8\110", IF_PENT|IF_MMX|IF_SM},
  1644.     {I_PSUBSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE8\110", IF_PENT|IF_MMX},
  1645.     {-1}
  1646. };
  1647.  
  1648. static struct itemplate instrux_PSUBSW[] = {
  1649.     {I_PSUBSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE9\110", IF_PENT|IF_MMX|IF_SM},
  1650.     {I_PSUBSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE9\110", IF_PENT|IF_MMX},
  1651.     {-1}
  1652. };
  1653.  
  1654. static struct itemplate instrux_PSUBUSB[] = {
  1655.     {I_PSUBUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD8\110", IF_PENT|IF_MMX|IF_SM},
  1656.     {I_PSUBUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD8\110", IF_PENT|IF_MMX},
  1657.     {-1}
  1658. };
  1659.  
  1660. static struct itemplate instrux_PSUBUSW[] = {
  1661.     {I_PSUBUSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD9\110", IF_PENT|IF_MMX|IF_SM},
  1662.     {I_PSUBUSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD9\110", IF_PENT|IF_MMX},
  1663.     {-1}
  1664. };
  1665.  
  1666. static struct itemplate instrux_PSUBW[] = {
  1667.     {I_PSUBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF9\110", IF_PENT|IF_MMX|IF_SM},
  1668.     {I_PSUBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF9\110", IF_PENT|IF_MMX},
  1669.     {-1}
  1670. };
  1671.  
  1672. static struct itemplate instrux_PUNPCKHBW[] = {
  1673.     {I_PUNPCKHBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x68\110", IF_PENT|IF_MMX|IF_SM},
  1674.     {I_PUNPCKHBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x68\110", IF_PENT|IF_MMX},
  1675.     {-1}
  1676. };
  1677.  
  1678. static struct itemplate instrux_PUNPCKHDQ[] = {
  1679.     {I_PUNPCKHDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6A\110", IF_PENT|IF_MMX|IF_SM},
  1680.     {I_PUNPCKHDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6A\110", IF_PENT|IF_MMX},
  1681.     {-1}
  1682. };
  1683.  
  1684. static struct itemplate instrux_PUNPCKHWD[] = {
  1685.     {I_PUNPCKHWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x69\110", IF_PENT|IF_MMX|IF_SM},
  1686.     {I_PUNPCKHWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x69\110", IF_PENT|IF_MMX},
  1687.     {-1}
  1688. };
  1689.  
  1690. static struct itemplate instrux_PUNPCKLBW[] = {
  1691.     {I_PUNPCKLBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x60\110", IF_PENT|IF_MMX|IF_SM},
  1692.     {I_PUNPCKLBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x60\110", IF_PENT|IF_MMX},
  1693.     {-1}
  1694. };
  1695.  
  1696. static struct itemplate instrux_PUNPCKLDQ[] = {
  1697.     {I_PUNPCKLDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x62\110", IF_PENT|IF_MMX|IF_SM},
  1698.     {I_PUNPCKLDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x62\110", IF_PENT|IF_MMX},
  1699.     {-1}
  1700. };
  1701.  
  1702. static struct itemplate instrux_PUNPCKLWD[] = {
  1703.     {I_PUNPCKLWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x61\110", IF_PENT|IF_MMX|IF_SM},
  1704.     {I_PUNPCKLWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x61\110", IF_PENT|IF_MMX},
  1705.     {-1}
  1706. };
  1707.  
  1708. static struct itemplate instrux_PUSH[] = {
  1709.     {I_PUSH, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\206", IF_8086},
  1710.     {I_PUSH, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\206", IF_386},
  1711.     {I_PUSH, 1, {REG_FSGS,0,0}, "\1\x0F\7", IF_386},
  1712.     {I_PUSH, 1, {REG_SREG,0,0}, "\6", IF_8086},
  1713.     {I_PUSH, 1, {REG16,0,0}, "\320\10\x50", IF_8086},
  1714.     {I_PUSH, 1, {REG32,0,0}, "\321\10\x50", IF_386},
  1715.     {I_PUSH, 1, {IMMEDIATE|BITS8,0,0}, "\1\x6A\14", IF_286},
  1716.     {I_PUSH, 1, {IMMEDIATE|BITS16,0,0}, "\320\1\x68\30", IF_286},
  1717.     {I_PUSH, 1, {IMMEDIATE|BITS32,0,0}, "\321\1\x68\40", IF_386},
  1718.     {-1}
  1719. };
  1720.  
  1721. static struct itemplate instrux_PUSHA[] = {
  1722.     {I_PUSHA, 0, {0,0,0}, "\322\1\x60", IF_186},
  1723.     {-1}
  1724. };
  1725.  
  1726. static struct itemplate instrux_PUSHAD[] = {
  1727.     {I_PUSHAD, 0, {0,0,0}, "\321\1\x60", IF_386},
  1728.     {-1}
  1729. };
  1730.  
  1731. static struct itemplate instrux_PUSHAW[] = {
  1732.     {I_PUSHAW, 0, {0,0,0}, "\320\1\x60", IF_186},
  1733.     {-1}
  1734. };
  1735.  
  1736. static struct itemplate instrux_PUSHF[] = {
  1737.     {I_PUSHF, 0, {0,0,0}, "\322\1\x9C", IF_186},
  1738.     {-1}
  1739. };
  1740.  
  1741. static struct itemplate instrux_PUSHFD[] = {
  1742.     {I_PUSHFD, 0, {0,0,0}, "\321\1\x9C", IF_386},
  1743.     {-1}
  1744. };
  1745.  
  1746. static struct itemplate instrux_PUSHFW[] = {
  1747.     {I_PUSHFW, 0, {0,0,0}, "\320\1\x9C", IF_186},
  1748.     {-1}
  1749. };
  1750.  
  1751. static struct itemplate instrux_PXOR[] = {
  1752.     {I_PXOR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEF\110", IF_PENT|IF_MMX|IF_SM},
  1753.     {I_PXOR, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEF\110", IF_PENT|IF_MMX},
  1754.     {-1}
  1755. };
  1756.  
  1757. static struct itemplate instrux_RCL[] = {
  1758.     {I_RCL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\202", IF_8086},
  1759.     {I_RCL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\202", IF_8086},
  1760.     {I_RCL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\202\25", IF_286},
  1761.     {I_RCL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\202", IF_8086},
  1762.     {I_RCL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\202", IF_8086},
  1763.     {I_RCL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\202\25", IF_286},
  1764.     {I_RCL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\202", IF_386},
  1765.     {I_RCL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\202", IF_386},
  1766.     {I_RCL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\202\25", IF_386},
  1767.     {-1}
  1768. };
  1769.  
  1770. static struct itemplate instrux_RCR[] = {
  1771.     {I_RCR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\203", IF_8086},
  1772.     {I_RCR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\203", IF_8086},
  1773.     {I_RCR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\203\25", IF_286},
  1774.     {I_RCR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\203", IF_8086},
  1775.     {I_RCR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\203", IF_8086},
  1776.     {I_RCR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\203\25", IF_286},
  1777.     {I_RCR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\203", IF_386},
  1778.     {I_RCR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\203", IF_386},
  1779.     {I_RCR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\203\25", IF_386},
  1780.     {-1}
  1781. };
  1782.  
  1783. static struct itemplate instrux_RDMSR[] = {
  1784.     {I_RDMSR, 0, {0,0,0}, "\2\x0F\x32", IF_PENT},
  1785.     {-1}
  1786. };
  1787.  
  1788. static struct itemplate instrux_RDPMC[] = {
  1789.     {I_RDPMC, 0, {0,0,0}, "\2\x0F\x33", IF_P6},
  1790.     {-1}
  1791. };
  1792.  
  1793. static struct itemplate instrux_RDTSC[] = {
  1794.     {I_RDTSC, 0, {0,0,0}, "\2\x0F\x31", IF_PENT},
  1795.     {-1}
  1796. };
  1797.  
  1798. static struct itemplate instrux_RESB[] = {
  1799.     {I_RESB, 1, {IMMEDIATE,0,0}, "\340", IF_8086},
  1800.     {-1}
  1801. };
  1802.  
  1803. static struct itemplate instrux_RESD[] = {
  1804.     {-1}
  1805. };
  1806.  
  1807. static struct itemplate instrux_RESQ[] = {
  1808.     {-1}
  1809. };
  1810.  
  1811. static struct itemplate instrux_REST[] = {
  1812.     {-1}
  1813. };
  1814.  
  1815. static struct itemplate instrux_RESW[] = {
  1816.     {-1}
  1817. };
  1818.  
  1819. static struct itemplate instrux_RET[] = {
  1820.     {I_RET, 0, {0,0,0}, "\1\xC3", IF_8086},
  1821.     {I_RET, 1, {IMMEDIATE,0,0}, "\1\xC2\30", IF_8086},
  1822.     {-1}
  1823. };
  1824.  
  1825. static struct itemplate instrux_RETF[] = {
  1826.     {I_RETF, 0, {0,0,0}, "\1\xCB", IF_8086},
  1827.     {I_RETF, 1, {IMMEDIATE,0,0}, "\1\xCA\30", IF_8086},
  1828.     {-1}
  1829. };
  1830.  
  1831. static struct itemplate instrux_RETN[] = {
  1832.     {I_RETN, 0, {0,0,0}, "\1\xC3", IF_8086},
  1833.     {I_RETN, 1, {IMMEDIATE,0,0}, "\1\xC2\30", IF_8086},
  1834.     {-1}
  1835. };
  1836.  
  1837. static struct itemplate instrux_ROL[] = {
  1838.     {I_ROL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\200", IF_8086},
  1839.     {I_ROL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\200", IF_8086},
  1840.     {I_ROL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\200\25", IF_286},
  1841.     {I_ROL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\200", IF_8086},
  1842.     {I_ROL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\200", IF_8086},
  1843.     {I_ROL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\200\25", IF_286},
  1844.     {I_ROL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\200", IF_386},
  1845.     {I_ROL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\200", IF_386},
  1846.     {I_ROL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\200\25", IF_386},
  1847.     {-1}
  1848. };
  1849.  
  1850. static struct itemplate instrux_ROR[] = {
  1851.     {I_ROR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\201", IF_8086},
  1852.     {I_ROR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\201", IF_8086},
  1853.     {I_ROR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\201\25", IF_286},
  1854.     {I_ROR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\201", IF_8086},
  1855.     {I_ROR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\201", IF_8086},
  1856.     {I_ROR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\201\25", IF_286},
  1857.     {I_ROR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\201", IF_386},
  1858.     {I_ROR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\201", IF_386},
  1859.     {I_ROR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\201\25", IF_386},
  1860.     {-1}
  1861. };
  1862.  
  1863. static struct itemplate instrux_RSM[] = {
  1864.     {I_RSM, 0, {0,0,0}, "\2\x0F\xAA", IF_PENT},
  1865.     {-1}
  1866. };
  1867.  
  1868. static struct itemplate instrux_SAHF[] = {
  1869.     {I_SAHF, 0, {0,0,0}, "\1\x9E", IF_8086},
  1870.     {-1}
  1871. };
  1872.  
  1873. static struct itemplate instrux_SAL[] = {
  1874.     {I_SAL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\204", IF_8086},
  1875.     {I_SAL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\204", IF_8086},
  1876.     {I_SAL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\204\25", IF_286},
  1877.     {I_SAL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\204", IF_8086},
  1878.     {I_SAL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\204", IF_8086},
  1879.     {I_SAL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\204\25", IF_286},
  1880.     {I_SAL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\204", IF_386},
  1881.     {I_SAL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\204", IF_386},
  1882.     {I_SAL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\204\25", IF_386},
  1883.     {-1}
  1884. };
  1885.  
  1886. static struct itemplate instrux_SALC[] = {
  1887.     {I_SALC, 0, {0,0,0}, "\1\xD6", IF_8086|IF_UNDOC},
  1888.     {-1}
  1889. };
  1890.  
  1891. static struct itemplate instrux_SAR[] = {
  1892.     {I_SAR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\207", IF_8086},
  1893.     {I_SAR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\207", IF_8086},
  1894.     {I_SAR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\207\25", IF_286},
  1895.     {I_SAR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\207", IF_8086},
  1896.     {I_SAR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\207", IF_8086},
  1897.     {I_SAR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\207\25", IF_286},
  1898.     {I_SAR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\207", IF_386},
  1899.     {I_SAR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\207", IF_386},
  1900.     {I_SAR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\207\25", IF_386},
  1901.     {-1}
  1902. };
  1903.  
  1904. static struct itemplate instrux_SBB[] = {
  1905.     {I_SBB, 2, {MEMORY,REG8,0}, "\300\1\x18\101", IF_8086|IF_SM},
  1906.     {I_SBB, 2, {REG8,REG8,0}, "\300\1\x18\101", IF_8086},
  1907.     {I_SBB, 2, {MEMORY,REG16,0}, "\320\300\1\x19\101", IF_8086|IF_SM},
  1908.     {I_SBB, 2, {REG16,REG16,0}, "\320\300\1\x19\101", IF_8086},
  1909.     {I_SBB, 2, {MEMORY,REG32,0}, "\321\300\1\x19\101", IF_386|IF_SM},
  1910.     {I_SBB, 2, {REG32,REG32,0}, "\321\300\1\x19\101", IF_386},
  1911.     {I_SBB, 2, {REG8,MEMORY,0}, "\301\1\x1A\110", IF_8086|IF_SM},
  1912.     {I_SBB, 2, {REG8,REG8,0}, "\301\1\x1A\110", IF_8086},
  1913.     {I_SBB, 2, {REG16,MEMORY,0}, "\320\301\1\x1B\110", IF_8086|IF_SM},
  1914.     {I_SBB, 2, {REG16,REG16,0}, "\320\301\1\x1B\110", IF_8086},
  1915.     {I_SBB, 2, {REG32,MEMORY,0}, "\321\301\1\x1B\110", IF_386|IF_SM},
  1916.     {I_SBB, 2, {REG32,REG32,0}, "\321\301\1\x1B\110", IF_386},
  1917.     {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\203\15", IF_8086},
  1918.     {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\203\15", IF_8086},
  1919.     {I_SBB, 2, {REG_AL,IMMEDIATE,0}, "\1\x1C\21", IF_8086|IF_SM},
  1920.     {I_SBB, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x1D\31", IF_8086|IF_SM},
  1921.     {I_SBB, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x1D\41", IF_386|IF_SM},
  1922.     {I_SBB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\203\21", IF_8086|IF_SM},
  1923.     {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\203\31", IF_8086|IF_SM},
  1924.     {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\203\41", IF_386|IF_SM},
  1925.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\203\21", IF_8086|IF_SM},
  1926.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\203\31", IF_8086|IF_SM},
  1927.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\203\41", IF_386|IF_SM},
  1928.     {-1}
  1929. };
  1930.  
  1931. static struct itemplate instrux_SCASB[] = {
  1932.     {I_SCASB, 0, {0,0,0}, "\1\xAE", IF_8086},
  1933.     {-1}
  1934. };
  1935.  
  1936. static struct itemplate instrux_SCASD[] = {
  1937.     {I_SCASD, 0, {0,0,0}, "\321\1\xAF", IF_386},
  1938.     {-1}
  1939. };
  1940.  
  1941. static struct itemplate instrux_SCASW[] = {
  1942.     {I_SCASW, 0, {0,0,0}, "\320\1\xAF", IF_8086},
  1943.     {-1}
  1944. };
  1945.  
  1946. static struct itemplate instrux_SGDT[] = {
  1947.     {I_SGDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\200", IF_286|IF_PRIV},
  1948.     {-1}
  1949. };
  1950.  
  1951. static struct itemplate instrux_SHL[] = {
  1952.     {I_SHL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\204", IF_8086},
  1953.     {I_SHL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\204", IF_8086},
  1954.     {I_SHL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\204\25", IF_286},
  1955.     {I_SHL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\204", IF_8086},
  1956.     {I_SHL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\204", IF_8086},
  1957.     {I_SHL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\204\25", IF_286},
  1958.     {I_SHL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\204", IF_386},
  1959.     {I_SHL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\204", IF_386},
  1960.     {I_SHL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\204\25", IF_386},
  1961.     {-1}
  1962. };
  1963.  
  1964. static struct itemplate instrux_SHLD[] = {
  1965.     {I_SHLD, 3, {MEMORY,REG16,IMMEDIATE}, "\300\320\2\x0F\xA4\101\26", IF_386|IF_SM2},
  1966.     {I_SHLD, 3, {REG16,REG16,IMMEDIATE}, "\300\320\2\x0F\xA4\101\26", IF_386|IF_SM2},
  1967.     {I_SHLD, 3, {MEMORY,REG32,IMMEDIATE}, "\300\321\2\x0F\xA4\101\26", IF_386|IF_SM2},
  1968.     {I_SHLD, 3, {REG32,REG32,IMMEDIATE}, "\300\321\2\x0F\xA4\101\26", IF_386|IF_SM2},
  1969.     {I_SHLD, 3, {MEMORY,REG16,REG_CL}, "\300\320\2\x0F\xA5\101", IF_386|IF_SM},
  1970.     {I_SHLD, 3, {REG16,REG16,REG_CL}, "\300\320\2\x0F\xA5\101", IF_386},
  1971.     {I_SHLD, 3, {MEMORY,REG32,REG_CL}, "\300\321\2\x0F\xA5\101", IF_386|IF_SM},
  1972.     {I_SHLD, 3, {REG32,REG32,REG_CL}, "\300\321\2\x0F\xA5\101", IF_386},
  1973.     {-1}
  1974. };
  1975.  
  1976. static struct itemplate instrux_SHR[] = {
  1977.     {I_SHR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\205", IF_8086},
  1978.     {I_SHR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\205", IF_8086},
  1979.     {I_SHR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\205\25", IF_286},
  1980.     {I_SHR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\205", IF_8086},
  1981.     {I_SHR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\205", IF_8086},
  1982.     {I_SHR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\205\25", IF_286},
  1983.     {I_SHR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\205", IF_386},
  1984.     {I_SHR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\205", IF_386},
  1985.     {I_SHR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\205\25", IF_386},
  1986.     {-1}
  1987. };
  1988.  
  1989. static struct itemplate instrux_SHRD[] = {
  1990.     {I_SHRD, 3, {MEMORY,REG16,IMMEDIATE}, "\300\320\2\x0F\xAC\101\26", IF_386|IF_SM2},
  1991.     {I_SHRD, 3, {REG16,REG16,IMMEDIATE}, "\300\320\2\x0F\xAC\101\26", IF_386|IF_SM2},
  1992.     {I_SHRD, 3, {MEMORY,REG32,IMMEDIATE}, "\300\321\2\x0F\xAC\101\26", IF_386|IF_SM2},
  1993.     {I_SHRD, 3, {REG32,REG32,IMMEDIATE}, "\300\321\2\x0F\xAC\101\26", IF_386|IF_SM2},
  1994.     {I_SHRD, 3, {MEMORY,REG16,REG_CL}, "\300\320\2\x0F\xAD\101", IF_386|IF_SM},
  1995.     {I_SHRD, 3, {REG16,REG16,REG_CL}, "\300\320\2\x0F\xAD\101", IF_386},
  1996.     {I_SHRD, 3, {MEMORY,REG32,REG_CL}, "\300\321\2\x0F\xAD\101", IF_386|IF_SM},
  1997.     {I_SHRD, 3, {REG32,REG32,REG_CL}, "\300\321\2\x0F\xAD\101", IF_386},
  1998.     {-1}
  1999. };
  2000.  
  2001. static struct itemplate instrux_SIDT[] = {
  2002.     {I_SIDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\201", IF_286|IF_PRIV},
  2003.     {-1}
  2004. };
  2005.  
  2006. static struct itemplate instrux_SLDT[] = {
  2007.     {I_SLDT, 1, {MEMORY,0,0}, "\300\1\x0F\17\200", IF_286|IF_PRIV},
  2008.     {I_SLDT, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\200", IF_286|IF_PRIV},
  2009.     {I_SLDT, 1, {REG16,0,0}, "\300\1\x0F\17\200", IF_286|IF_PRIV},
  2010.     {-1}
  2011. };
  2012.  
  2013. static struct itemplate instrux_SMI[] = {
  2014.     {I_SMI, 0, {0,0,0}, "\1\xF1", IF_386|IF_UNDOC},
  2015.     {-1}
  2016. };
  2017.  
  2018. static struct itemplate instrux_SMSW[] = {
  2019.     {I_SMSW, 1, {MEMORY,0,0}, "\300\2\x0F\x01\204", IF_286|IF_PRIV},
  2020.     {I_SMSW, 1, {REG16,0,0}, "\300\2\x0F\x01\204", IF_286|IF_PRIV},
  2021.     {-1}
  2022. };
  2023.  
  2024. static struct itemplate instrux_STC[] = {
  2025.     {I_STC, 0, {0,0,0}, "\1\xF9", IF_8086},
  2026.     {-1}
  2027. };
  2028.  
  2029. static struct itemplate instrux_STD[] = {
  2030.     {I_STD, 0, {0,0,0}, "\1\xFD", IF_8086},
  2031.     {-1}
  2032. };
  2033.  
  2034. static struct itemplate instrux_STI[] = {
  2035.     {I_STI, 0, {0,0,0}, "\1\xFB", IF_8086},
  2036.     {-1}
  2037. };
  2038.  
  2039. static struct itemplate instrux_STOSB[] = {
  2040.     {I_STOSB, 0, {0,0,0}, "\1\xAA", IF_8086},
  2041.     {-1}
  2042. };
  2043.  
  2044. static struct itemplate instrux_STOSD[] = {
  2045.     {I_STOSD, 0, {0,0,0}, "\321\1\xAB", IF_386},
  2046.     {-1}
  2047. };
  2048.  
  2049. static struct itemplate instrux_STOSW[] = {
  2050.     {I_STOSW, 0, {0,0,0}, "\320\1\xAB", IF_8086},
  2051.     {-1}
  2052. };
  2053.  
  2054. static struct itemplate instrux_STR[] = {
  2055.     {I_STR, 1, {MEMORY,0,0}, "\300\1\x0F\17\201", IF_286|IF_PRIV},
  2056.     {I_STR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\201", IF_286|IF_PRIV},
  2057.     {I_STR, 1, {REG16,0,0}, "\300\1\x0F\17\201", IF_286|IF_PRIV},
  2058.     {-1}
  2059. };
  2060.  
  2061. static struct itemplate instrux_SUB[] = {
  2062.     {I_SUB, 2, {MEMORY,REG8,0}, "\300\1\x28\101", IF_8086|IF_SM},
  2063.     {I_SUB, 2, {REG8,REG8,0}, "\300\1\x28\101", IF_8086},
  2064.     {I_SUB, 2, {MEMORY,REG16,0}, "\320\300\1\x29\101", IF_8086|IF_SM},
  2065.     {I_SUB, 2, {REG16,REG16,0}, "\320\300\1\x29\101", IF_8086},
  2066.     {I_SUB, 2, {MEMORY,REG32,0}, "\321\300\1\x29\101", IF_386|IF_SM},
  2067.     {I_SUB, 2, {REG32,REG32,0}, "\321\300\1\x29\101", IF_386},
  2068.     {I_SUB, 2, {REG8,MEMORY,0}, "\301\1\x2A\110", IF_8086|IF_SM},
  2069.     {I_SUB, 2, {REG8,REG8,0}, "\301\1\x2A\110", IF_8086},
  2070.     {I_SUB, 2, {REG16,MEMORY,0}, "\320\301\1\x2B\110", IF_8086|IF_SM},
  2071.     {I_SUB, 2, {REG16,REG16,0}, "\320\301\1\x2B\110", IF_8086},
  2072.     {I_SUB, 2, {REG32,MEMORY,0}, "\321\301\1\x2B\110", IF_386|IF_SM},
  2073.     {I_SUB, 2, {REG32,REG32,0}, "\321\301\1\x2B\110", IF_386},
  2074.     {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\205\15", IF_8086},
  2075.     {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\205\15", IF_386},
  2076.     {I_SUB, 2, {REG_AL,IMMEDIATE,0}, "\1\x2C\21", IF_8086|IF_SM},
  2077.     {I_SUB, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x2D\31", IF_8086|IF_SM},
  2078.     {I_SUB, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x2D\41", IF_386|IF_SM},
  2079.     {I_SUB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\205\21", IF_8086|IF_SM},
  2080.     {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\205\31", IF_8086|IF_SM},
  2081.     {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\205\41", IF_386|IF_SM},
  2082.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\205\21", IF_8086|IF_SM},
  2083.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\205\31", IF_8086|IF_SM},
  2084.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\205\41", IF_386|IF_SM},
  2085.     {-1}
  2086. };
  2087.  
  2088. static struct itemplate instrux_TEST[] = {
  2089.     {I_TEST, 2, {MEMORY,REG8,0}, "\300\1\x84\101", IF_8086|IF_SM},
  2090.     {I_TEST, 2, {REG8,REG8,0}, "\300\1\x84\101", IF_8086},
  2091.     {I_TEST, 2, {MEMORY,REG16,0}, "\320\300\1\x85\101", IF_8086|IF_SM},
  2092.     {I_TEST, 2, {REG16,REG16,0}, "\320\300\1\x85\101", IF_8086},
  2093.     {I_TEST, 2, {MEMORY,REG32,0}, "\321\300\1\x85\101", IF_386|IF_SM},
  2094.     {I_TEST, 2, {REG32,REG32,0}, "\321\300\1\x85\101", IF_386},
  2095.     {I_TEST, 2, {REG_AL,IMMEDIATE,0}, "\1\xA8\21", IF_8086|IF_SM},
  2096.     {I_TEST, 2, {REG_AX,IMMEDIATE,0}, "\320\1\xA9\31", IF_8086|IF_SM},
  2097.     {I_TEST, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\xA9\41", IF_386|IF_SM},
  2098.     {I_TEST, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xF6\200\21", IF_8086|IF_SM},
  2099.     {I_TEST, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xF7\200\31", IF_8086|IF_SM},
  2100.     {I_TEST, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xF7\200\41", IF_386|IF_SM},
  2101.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\xF6\200\21", IF_8086|IF_SM},
  2102.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\xF7\200\31", IF_8086|IF_SM},
  2103.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\xF7\200\41", IF_386|IF_UNDOC|IF_SM},
  2104.     {-1}
  2105. };
  2106.  
  2107. static struct itemplate instrux_UMOV[] = {
  2108.     {I_UMOV, 2, {MEMORY,REG8,0}, "\300\2\x0F\x10\101", IF_386|IF_UNDOC|IF_SM},
  2109.     {I_UMOV, 2, {REG8,REG8,0}, "\300\2\x0F\x10\101", IF_386|IF_UNDOC},
  2110.     {I_UMOV, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\x11\101", IF_386|IF_UNDOC|IF_SM},
  2111.     {I_UMOV, 2, {REG16,REG16,0}, "\320\300\2\x0F\x11\101", IF_386|IF_UNDOC},
  2112.     {I_UMOV, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\x11\101", IF_386|IF_UNDOC|IF_SM},
  2113.     {I_UMOV, 2, {REG32,REG32,0}, "\321\300\2\x0F\x11\101", IF_386|IF_UNDOC},
  2114.     {I_UMOV, 2, {REG8,MEMORY,0}, "\301\2\x0F\x12\110", IF_386|IF_UNDOC|IF_SM},
  2115.     {I_UMOV, 2, {REG8,REG8,0}, "\301\2\x0F\x12\110", IF_386|IF_UNDOC},
  2116.     {I_UMOV, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x13\110", IF_386|IF_UNDOC|IF_SM},
  2117.     {I_UMOV, 2, {REG16,REG16,0}, "\320\301\2\x0F\x13\110", IF_386|IF_UNDOC},
  2118.     {I_UMOV, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x13\110", IF_386|IF_UNDOC|IF_SM},
  2119.     {I_UMOV, 2, {REG32,REG32,0}, "\321\301\2\x0F\x13\110", IF_386|IF_UNDOC},
  2120.     {-1}
  2121. };
  2122.  
  2123. static struct itemplate instrux_VERR[] = {
  2124.     {I_VERR, 1, {MEMORY,0,0}, "\300\1\x0F\17\204", IF_286|IF_PRIV},
  2125.     {I_VERR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\204", IF_286|IF_PRIV},
  2126.     {I_VERR, 1, {REG16,0,0}, "\300\1\x0F\17\204", IF_286|IF_PRIV},
  2127.     {-1}
  2128. };
  2129.  
  2130. static struct itemplate instrux_VERW[] = {
  2131.     {I_VERW, 1, {MEMORY,0,0}, "\300\1\x0F\17\205", IF_286|IF_PRIV},
  2132.     {I_VERW, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\205", IF_286|IF_PRIV},
  2133.     {I_VERW, 1, {REG16,0,0}, "\300\1\x0F\17\205", IF_286|IF_PRIV},
  2134.     {-1}
  2135. };
  2136.  
  2137. static struct itemplate instrux_WAIT[] = {
  2138.     {I_WAIT, 0, {0,0,0}, "\1\x9B", IF_8086},
  2139.     {-1}
  2140. };
  2141.  
  2142. static struct itemplate instrux_WBINVD[] = {
  2143.     {I_WBINVD, 0, {0,0,0}, "\2\x0F\x09", IF_486},
  2144.     {-1}
  2145. };
  2146.  
  2147. static struct itemplate instrux_WRMSR[] = {
  2148.     {I_WRMSR, 0, {0,0,0}, "\2\x0F\x30", IF_PENT},
  2149.     {-1}
  2150. };
  2151.  
  2152. static struct itemplate instrux_XADD[] = {
  2153.     {I_XADD, 2, {MEMORY,REG8,0}, "\300\2\x0F\xC0\101", IF_486|IF_SM},
  2154.     {I_XADD, 2, {REG8,REG8,0}, "\300\2\x0F\xC0\101", IF_486},
  2155.     {I_XADD, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xC1\101", IF_486|IF_SM},
  2156.     {I_XADD, 2, {REG16,REG16,0}, "\320\300\2\x0F\xC1\101", IF_486},
  2157.     {I_XADD, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xC1\101", IF_486|IF_SM},
  2158.     {I_XADD, 2, {REG32,REG32,0}, "\321\300\2\x0F\xC1\101", IF_486},
  2159.     {-1}
  2160. };
  2161.  
  2162. static struct itemplate instrux_XBTS[] = {
  2163.     {I_XBTS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xA6\110", IF_386|IF_SW|IF_UNDOC},
  2164.     {I_XBTS, 2, {REG16,REG16,0}, "\320\301\2\x0F\xA6\110", IF_386|IF_UNDOC},
  2165.     {I_XBTS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xA6\110", IF_386|IF_SD|IF_UNDOC},
  2166.     {I_XBTS, 2, {REG32,REG32,0}, "\321\301\2\x0F\xA6\110", IF_386|IF_UNDOC},
  2167.     {-1}
  2168. };
  2169.  
  2170. static struct itemplate instrux_XCHG[] = {
  2171.     {I_XCHG, 2, {REG_AX,REG16,0}, "\320\11\x90", IF_8086},
  2172.     {I_XCHG, 2, {REG_EAX,REG32,0}, "\321\11\x90", IF_386},
  2173.     {I_XCHG, 2, {REG16,REG_AX,0}, "\320\10\x90", IF_8086},
  2174.     {I_XCHG, 2, {REG32,REG_EAX,0}, "\321\10\x90", IF_386},
  2175.     {I_XCHG, 2, {REG8,MEMORY,0}, "\301\1\x86\110", IF_8086|IF_SM},
  2176.     {I_XCHG, 2, {REG8,REG8,0}, "\301\1\x86\110", IF_8086},
  2177.     {I_XCHG, 2, {REG16,MEMORY,0}, "\320\301\1\x87\110", IF_8086|IF_SM},
  2178.     {I_XCHG, 2, {REG16,REG16,0}, "\320\301\1\x87\110", IF_8086},
  2179.     {I_XCHG, 2, {REG32,MEMORY,0}, "\321\301\1\x87\110", IF_386|IF_SM},
  2180.     {I_XCHG, 2, {REG32,REG32,0}, "\321\301\1\x87\110", IF_386},
  2181.     {I_XCHG, 2, {MEMORY,REG8,0}, "\300\1\x86\101", IF_8086|IF_SM},
  2182.     {I_XCHG, 2, {REG8,REG8,0}, "\300\1\x86\101", IF_8086},
  2183.     {I_XCHG, 2, {MEMORY,REG16,0}, "\320\300\1\x87\101", IF_8086|IF_SM},
  2184.     {I_XCHG, 2, {REG16,REG16,0}, "\320\300\1\x87\101", IF_8086},
  2185.     {I_XCHG, 2, {MEMORY,REG32,0}, "\321\300\1\x87\101", IF_386|IF_SM},
  2186.     {I_XCHG, 2, {REG32,REG32,0}, "\321\300\1\x87\101", IF_386},
  2187.     {-1}
  2188. };
  2189.  
  2190. static struct itemplate instrux_XLATB[] = {
  2191.     {I_XLATB, 0, {0,0,0}, "\1\xD7", IF_8086},
  2192.     {-1}
  2193. };
  2194.  
  2195. static struct itemplate instrux_XOR[] = {
  2196.     {I_XOR, 2, {MEMORY,REG8,0}, "\300\1\x30\101", IF_8086|IF_SM},
  2197.     {I_XOR, 2, {REG8,REG8,0}, "\300\1\x30\101", IF_8086},
  2198.     {I_XOR, 2, {MEMORY,REG16,0}, "\320\300\1\x31\101", IF_8086|IF_SM},
  2199.     {I_XOR, 2, {REG16,REG16,0}, "\320\300\1\x31\101", IF_8086},
  2200.     {I_XOR, 2, {MEMORY,REG32,0}, "\321\300\1\x31\101", IF_386|IF_SM},
  2201.     {I_XOR, 2, {REG32,REG32,0}, "\321\300\1\x31\101", IF_386},
  2202.     {I_XOR, 2, {REG8,MEMORY,0}, "\301\1\x32\110", IF_8086|IF_SM},
  2203.     {I_XOR, 2, {REG8,REG8,0}, "\301\1\x32\110", IF_8086},
  2204.     {I_XOR, 2, {REG16,MEMORY,0}, "\320\301\1\x33\110", IF_8086|IF_SM},
  2205.     {I_XOR, 2, {REG16,REG16,0}, "\320\301\1\x33\110", IF_8086},
  2206.     {I_XOR, 2, {REG32,MEMORY,0}, "\321\301\1\x33\110", IF_386|IF_SM},
  2207.     {I_XOR, 2, {REG32,REG32,0}, "\321\301\1\x33\110", IF_386},
  2208.     {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\206\15", IF_8086},
  2209.     {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\206\15", IF_386},
  2210.     {I_XOR, 2, {REG_AL,IMMEDIATE,0}, "\1\x34\21", IF_8086|IF_SM},
  2211.     {I_XOR, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x35\31", IF_8086|IF_SM},
  2212.     {I_XOR, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x35\41", IF_386|IF_SM},
  2213.     {I_XOR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\206\21", IF_8086|IF_SM},
  2214.     {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\206\31", IF_8086|IF_SM},
  2215.     {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\206\41", IF_386|IF_SM},
  2216.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\206\21", IF_8086|IF_SM},
  2217.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\206\31", IF_8086|IF_SM},
  2218.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\206\41", IF_386|IF_SM},
  2219.     {-1}
  2220. };
  2221.  
  2222. static struct itemplate instrux_CMOVcc[] = {
  2223.     {I_CMOVcc, 2, {REG16,MEMORY,0}, "\320\301\1\x0F\330\x40\110", IF_P6|IF_SM},
  2224.     {I_CMOVcc, 2, {REG16,REG16,0}, "\320\301\1\x0F\330\x40\110", IF_P6},
  2225.     {I_CMOVcc, 2, {REG32,MEMORY,0}, "\320\301\1\x0F\330\x40\110", IF_P6|IF_SM},
  2226.     {I_CMOVcc, 2, {REG32,REG32,0}, "\320\301\1\x0F\330\x40\110", IF_P6},
  2227.     {-1}
  2228. };
  2229.  
  2230. static struct itemplate instrux_Jcc[] = {
  2231.     {I_Jcc, 1, {IMMEDIATE|NEAR,0,0}, "\322\1\x0F\330\x80\64", IF_386},
  2232.     {I_Jcc, 1, {IMMEDIATE,0,0}, "\330\x70\50", IF_8086},
  2233.     {I_Jcc, 1, {IMMEDIATE|SHORT,0,0}, "\330\x70\50", IF_8086},
  2234.     {-1}
  2235. };
  2236.  
  2237. static struct itemplate instrux_SETcc[] = {
  2238.     {I_SETcc, 1, {MEMORY,0,0}, "\300\1\x0F\330\x90\200", IF_386|IF_SB},
  2239.     {I_SETcc, 1, {REG8,0,0}, "\300\1\x0F\330\x90\200", IF_386},
  2240.     {-1}
  2241. };
  2242.  
  2243. struct itemplate *nasm_instructions[] = {
  2244.     instrux_AAA,
  2245.     instrux_AAD,
  2246.     instrux_AAM,
  2247.     instrux_AAS,
  2248.     instrux_ADC,
  2249.     instrux_ADD,
  2250.     instrux_AND,
  2251.     instrux_ARPL,
  2252.     instrux_BOUND,
  2253.     instrux_BSF,
  2254.     instrux_BSR,
  2255.     instrux_BSWAP,
  2256.     instrux_BT,
  2257.     instrux_BTC,
  2258.     instrux_BTR,
  2259.     instrux_BTS,
  2260.     instrux_CALL,
  2261.     instrux_CBW,
  2262.     instrux_CDQ,
  2263.     instrux_CLC,
  2264.     instrux_CLD,
  2265.     instrux_CLI,
  2266.     instrux_CLTS,
  2267.     instrux_CMC,
  2268.     instrux_CMP,
  2269.     instrux_CMPSB,
  2270.     instrux_CMPSD,
  2271.     instrux_CMPSW,
  2272.     instrux_CMPXCHG,
  2273.     instrux_CMPXCHG486,
  2274.     instrux_CMPXCHG8B,
  2275.     instrux_CPUID,
  2276.     instrux_CWD,
  2277.     instrux_CWDE,
  2278.     instrux_DAA,
  2279.     instrux_DAS,
  2280.     instrux_DB,
  2281.     instrux_DD,
  2282.     instrux_DEC,
  2283.     instrux_DIV,
  2284.     instrux_DQ,
  2285.     instrux_DT,
  2286.     instrux_DW,
  2287.     instrux_EMMS,
  2288.     instrux_ENTER,
  2289.     instrux_EQU,
  2290.     instrux_F2XM1,
  2291.     instrux_FABS,
  2292.     instrux_FADD,
  2293.     instrux_FADDP,
  2294.     instrux_FBLD,
  2295.     instrux_FBSTP,
  2296.     instrux_FCHS,
  2297.     instrux_FCLEX,
  2298.     instrux_FCMOVB,
  2299.     instrux_FCMOVBE,
  2300.     instrux_FCMOVE,
  2301.     instrux_FCMOVNB,
  2302.     instrux_FCMOVNBE,
  2303.     instrux_FCMOVNE,
  2304.     instrux_FCMOVNU,
  2305.     instrux_FCMOVU,
  2306.     instrux_FCOM,
  2307.     instrux_FCOMI,
  2308.     instrux_FCOMIP,
  2309.     instrux_FCOMP,
  2310.     instrux_FCOMPP,
  2311.     instrux_FCOS,
  2312.     instrux_FDECSTP,
  2313.     instrux_FDISI,
  2314.     instrux_FDIV,
  2315.     instrux_FDIVP,
  2316.     instrux_FDIVR,
  2317.     instrux_FDIVRP,
  2318.     instrux_FENI,
  2319.     instrux_FFREE,
  2320.     instrux_FIADD,
  2321.     instrux_FICOM,
  2322.     instrux_FICOMP,
  2323.     instrux_FIDIV,
  2324.     instrux_FIDIVR,
  2325.     instrux_FILD,
  2326.     instrux_FIMUL,
  2327.     instrux_FINCSTP,
  2328.     instrux_FINIT,
  2329.     instrux_FIST,
  2330.     instrux_FISTP,
  2331.     instrux_FISUB,
  2332.     instrux_FISUBR,
  2333.     instrux_FLD,
  2334.     instrux_FLD1,
  2335.     instrux_FLDCW,
  2336.     instrux_FLDENV,
  2337.     instrux_FLDL2E,
  2338.     instrux_FLDL2T,
  2339.     instrux_FLDLG2,
  2340.     instrux_FLDLN2,
  2341.     instrux_FLDPI,
  2342.     instrux_FLDZ,
  2343.     instrux_FMUL,
  2344.     instrux_FMULP,
  2345.     instrux_FNOP,
  2346.     instrux_FPATAN,
  2347.     instrux_FPREM,
  2348.     instrux_FPREM1,
  2349.     instrux_FPTAN,
  2350.     instrux_FRNDINT,
  2351.     instrux_FRSTOR,
  2352.     instrux_FSAVE,
  2353.     instrux_FSCALE,
  2354.     instrux_FSETPM,
  2355.     instrux_FSIN,
  2356.     instrux_FSINCOS,
  2357.     instrux_FSQRT,
  2358.     instrux_FST,
  2359.     instrux_FSTCW,
  2360.     instrux_FSTENV,
  2361.     instrux_FSTP,
  2362.     instrux_FSTSW,
  2363.     instrux_FSUB,
  2364.     instrux_FSUBP,
  2365.     instrux_FSUBR,
  2366.     instrux_FSUBRP,
  2367.     instrux_FTST,
  2368.     instrux_FUCOM,
  2369.     instrux_FUCOMI,
  2370.     instrux_FUCOMIP,
  2371.     instrux_FUCOMP,
  2372.     instrux_FUCOMPP,
  2373.     instrux_FXAM,
  2374.     instrux_FXCH,
  2375.     instrux_FXTRACT,
  2376.     instrux_FYL2X,
  2377.     instrux_FYL2XP1,
  2378.     instrux_HLT,
  2379.     instrux_IBTS,
  2380.     instrux_ICEBP,
  2381.     instrux_IDIV,
  2382.     instrux_IMUL,
  2383.     instrux_IN,
  2384.     instrux_INC,
  2385.     instrux_INCBIN,
  2386.     instrux_INSB,
  2387.     instrux_INSD,
  2388.     instrux_INSW,
  2389.     instrux_INT,
  2390.     instrux_INT01,
  2391.     instrux_INT1,
  2392.     instrux_INT3,
  2393.     instrux_INTO,
  2394.     instrux_INVD,
  2395.     instrux_INVLPG,
  2396.     instrux_IRET,
  2397.     instrux_IRETD,
  2398.     instrux_IRETW,
  2399.     instrux_JCXZ,
  2400.     instrux_JECXZ,
  2401.     instrux_JMP,
  2402.     instrux_LAHF,
  2403.     instrux_LAR,
  2404.     instrux_LDS,
  2405.     instrux_LEA,
  2406.     instrux_LEAVE,
  2407.     instrux_LES,
  2408.     instrux_LFS,
  2409.     instrux_LGDT,
  2410.     instrux_LGS,
  2411.     instrux_LIDT,
  2412.     instrux_LLDT,
  2413.     instrux_LMSW,
  2414.     instrux_LOADALL,
  2415.     instrux_LOADALL286,
  2416.     instrux_LODSB,
  2417.     instrux_LODSD,
  2418.     instrux_LODSW,
  2419.     instrux_LOOP,
  2420.     instrux_LOOPE,
  2421.     instrux_LOOPNE,
  2422.     instrux_LOOPNZ,
  2423.     instrux_LOOPZ,
  2424.     instrux_LSL,
  2425.     instrux_LSS,
  2426.     instrux_LTR,
  2427.     instrux_MOV,
  2428.     instrux_MOVD,
  2429.     instrux_MOVQ,
  2430.     instrux_MOVSB,
  2431.     instrux_MOVSD,
  2432.     instrux_MOVSW,
  2433.     instrux_MOVSX,
  2434.     instrux_MOVZX,
  2435.     instrux_MUL,
  2436.     instrux_NEG,
  2437.     instrux_NOP,
  2438.     instrux_NOT,
  2439.     instrux_OR,
  2440.     instrux_OUT,
  2441.     instrux_OUTSB,
  2442.     instrux_OUTSD,
  2443.     instrux_OUTSW,
  2444.     instrux_PACKSSDW,
  2445.     instrux_PACKSSWB,
  2446.     instrux_PACKUSWB,
  2447.     instrux_PADDB,
  2448.     instrux_PADDD,
  2449.     instrux_PADDSB,
  2450.     instrux_PADDSW,
  2451.     instrux_PADDUSB,
  2452.     instrux_PADDUSW,
  2453.     instrux_PADDW,
  2454.     instrux_PAND,
  2455.     instrux_PANDN,
  2456.     instrux_PCMPEQB,
  2457.     instrux_PCMPEQD,
  2458.     instrux_PCMPEQW,
  2459.     instrux_PCMPGTB,
  2460.     instrux_PCMPGTD,
  2461.     instrux_PCMPGTW,
  2462.     instrux_PMADDWD,
  2463.     instrux_PMULHW,
  2464.     instrux_PMULLW,
  2465.     instrux_POP,
  2466.     instrux_POPA,
  2467.     instrux_POPAD,
  2468.     instrux_POPAW,
  2469.     instrux_POPF,
  2470.     instrux_POPFD,
  2471.     instrux_POPFW,
  2472.     instrux_POR,
  2473.     instrux_PSLLD,
  2474.     instrux_PSLLQ,
  2475.     instrux_PSLLW,
  2476.     instrux_PSRAD,
  2477.     instrux_PSRAW,
  2478.     instrux_PSRLD,
  2479.     instrux_PSRLQ,
  2480.     instrux_PSRLW,
  2481.     instrux_PSUBB,
  2482.     instrux_PSUBD,
  2483.     instrux_PSUBSB,
  2484.     instrux_PSUBSW,
  2485.     instrux_PSUBUSB,
  2486.     instrux_PSUBUSW,
  2487.     instrux_PSUBW,
  2488.     instrux_PUNPCKHBW,
  2489.     instrux_PUNPCKHDQ,
  2490.     instrux_PUNPCKHWD,
  2491.     instrux_PUNPCKLBW,
  2492.     instrux_PUNPCKLDQ,
  2493.     instrux_PUNPCKLWD,
  2494.     instrux_PUSH,
  2495.     instrux_PUSHA,
  2496.     instrux_PUSHAD,
  2497.     instrux_PUSHAW,
  2498.     instrux_PUSHF,
  2499.     instrux_PUSHFD,
  2500.     instrux_PUSHFW,
  2501.     instrux_PXOR,
  2502.     instrux_RCL,
  2503.     instrux_RCR,
  2504.     instrux_RDMSR,
  2505.     instrux_RDPMC,
  2506.     instrux_RDTSC,
  2507.     instrux_RESB,
  2508.     instrux_RESD,
  2509.     instrux_RESQ,
  2510.     instrux_REST,
  2511.     instrux_RESW,
  2512.     instrux_RET,
  2513.     instrux_RETF,
  2514.     instrux_RETN,
  2515.     instrux_ROL,
  2516.     instrux_ROR,
  2517.     instrux_RSM,
  2518.     instrux_SAHF,
  2519.     instrux_SAL,
  2520.     instrux_SALC,
  2521.     instrux_SAR,
  2522.     instrux_SBB,
  2523.     instrux_SCASB,
  2524.     instrux_SCASD,
  2525.     instrux_SCASW,
  2526.     instrux_SGDT,
  2527.     instrux_SHL,
  2528.     instrux_SHLD,
  2529.     instrux_SHR,
  2530.     instrux_SHRD,
  2531.     instrux_SIDT,
  2532.     instrux_SLDT,
  2533.     instrux_SMI,
  2534.     instrux_SMSW,
  2535.     instrux_STC,
  2536.     instrux_STD,
  2537.     instrux_STI,
  2538.     instrux_STOSB,
  2539.     instrux_STOSD,
  2540.     instrux_STOSW,
  2541.     instrux_STR,
  2542.     instrux_SUB,
  2543.     instrux_TEST,
  2544.     instrux_UMOV,
  2545.     instrux_VERR,
  2546.     instrux_VERW,
  2547.     instrux_WAIT,
  2548.     instrux_WBINVD,
  2549.     instrux_WRMSR,
  2550.     instrux_XADD,
  2551.     instrux_XBTS,
  2552.     instrux_XCHG,
  2553.     instrux_XLATB,
  2554.     instrux_XOR,
  2555.     instrux_CMOVcc,
  2556.     instrux_Jcc,
  2557.     instrux_SETcc,
  2558. };
  2559.